如何知道c#UdpClient使用的端口号?

时间:2010-11-06 02:36:11

标签: c# port udpclient

我正在使用c sharp创建客户端服务器应用程序。服务器正在使用具有固定端口号的tcplistener。客户端使用tcpclient连接到服务器。连接后,客户端和服务器都使用此连接进行通信。然后,应用程序创建新的udp连接以发送和接收消息。由于服务器假设从单个客户端接受多个连接,我必须区分每个连接与不同的端口。为了做到这一点,我必须先 1.在服务器上,创建一个udpclient(在服务器上自动使用未使用的udp端口)。 2.将服务器udpclient使用的端口号发送给客户端。 3.客户端使用指定的端口号将数据发送到服务器。

问题是,如何创建一个udpclient,你可以知道使用的端口号?

3 个答案:

答案 0 :(得分:15)

以下是我的问题的答案。

UdpClient udpClient = new UdpClient(0));
Console.WriteLine("UDP port : " + ((IPEndPoint)udpClient.Client.LocalEndPoint).Port.ToString());

0作为构造函数参数设置应用程序以自动查找免费的udp端口。 ((IPEndPoint)udpClient.Client.LocalEndPoint)).Port.ToString()用于查找端口号。

答案 1 :(得分:2)

我相信您可以使用Socket.RemoteEndPoint属性来了解连接到服务器的客户端的IP /端口是什么(您知道本地IP /端口,因为您在该端口上启动了套接字,但它是也可以通过LocalEndPoint属性获得。

另请参阅MSDN UdpClient以获取有关如何正确使用UdpClient的简单示例。

答案 2 :(得分:0)

我认为你不能在服务器端使用UdpClient来实现你的目标,因为它没有绑定到IPEndPoint的Bind方法。

您应该使用Socket对象来执行此操作,这允许您监视端口以获取传入的UDP消息。毫无疑问,您可以告诉客户端服务器正在监视哪个端口。