如何知道c# UdpClient使用的端口号?
我正在使用 c Sharp 创建客户端服务器应用程序。服务器使用具有固定端口号的 tcplistener。客户端使用 tcpclient 连接到服务器。连接后,客户端和服务器都使用此连接进行通信。然后应用程序创建新的 udp 连接来发送和接收消息。由于服务器假设接受来自单个客户端的多个连接,因此我必须区分具有不同端口的每个连接。为了做到这一点,我必须首先 1. 在服务器上,创建一个udpclient(自动使用服务器上未使用的udp端口)。 2.将服务器udpclient使用的端口号发送给客户端。 3. 客户端使用指定的端口号向服务器发送数据。
问题是,如何创建一个可以知道所使用的端口号的udpclient?
I am creating a client server application using c sharp. The server is using tcplistener with fixed port number. the client connect to the server using tcpclient. Once connected, both client and server communicate using this connection. The application then create new udp connection to send and receive message. Since the server suppose to accept multiple connection from single client, i have to differentiate each connection with different port. In order to do this, i have to first
1. at server, create a udpclient (automatically use unused udp port at the server).
2. sends the port number used by the server udpclient to the client.
3. the client sends data to the server using specified port number.
The problem is, how to create a udpclient where you can know the port number used?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是我的问题的答案。
0 作为构造函数参数设置应用程序自动查找空闲的 udp 端口。
((IPEndPoint)udpClient.Client.LocalEndPoint)).Port.ToString()
用于查找端口号。Here are the answer to my questions.
0 as the constructor parameter set the app to automatically find free udp port.
((IPEndPoint)udpClient.Client.LocalEndPoint)).Port.ToString()
is used to find the port number.我相信您可以使用 Socket.RemoteEndPoint 属性来了解连接到服务器的客户端的 IP/端口是什么(您知道您的本地 IP/端口,因为您在该端口上启动了套接字,但它也可以通过 LocalEndPoint 属性获得。
另请参阅 MSDN UdpClient 了解如何使用UdpClient 正确。
I believe you can use the Socket.RemoteEndPoint property to know what the IP/Port of the client connected to the server is (you know your local IP/port because you started the socket on that port, but it is also available through the LocalEndPoint property.
Also see the MSDN UdpClient for a simple example on how to use the UdpClient properly.
我认为您不能在服务器端使用 UdpClient 来实现您的目标,因为它没有 Bind 方法来绑定到 IPEndPoint。
您应该使用 Socket 对象来执行此操作,它允许您监视传入 UDP 消息的端口。那么毫无疑问你可以告诉客户端服务器正在监听哪个端口。
I think you cannot use UdpClient at server side to achieve your goal, as it does not have a Bind method to bind to an IPEndPoint.
You should use a Socket object to do that, which allows you to monitor a port for incoming UDP messages. Then no doubt you can tell the client which port the server is monitoring.