8

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

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

4

3 回答 3

18

这是我的问题的答案。

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

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

于 2010-11-06T20:11:58.790 回答
2

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

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

于 2010-11-06T07:50:39.000 回答
0

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

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

于 2010-11-06T07:23:13.933 回答