【发布时间】:2016-07-05 09:53:16
【问题描述】:
当您使用 0 作为端口创建 IPEndPoint 时,如何获得动态分配的端口:
var endpoint = new IPEndPoint(Dns.GetHostAddresses(localhost).FirstOrDefault(), 0);
如果我查看 endpoint.Port,它是 0(任意),即使底层 Socket 必须已经有一个指定的端口?
【问题讨论】:
-
您可以获取所有信息:tcpClient.Client.LocalEndPoint 或 tcpClient.Client.RemoteEndPoint 和 tcpListener.LocalEndPoint
-
由于我使用端点进行 SIP 流量,我需要同时支持 UDP 和 TCP,所以在这种情况下我需要使用 udpclient 或 tcpclient。我猜一个 udpclient 有同样的可能性?如果根本无法从 IPEndPoint 获取动态端口,这可能是一个解决方案。
-
是的,udp 和 tcp 都可以使用 Socket 类。这个“RemoteEndPoint”和“LocalEndPoint”来自 Socket 类。