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

发布于 2024-10-01 01:59:53 字数 323 浏览 9 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

铁憨憨 2024-10-08 01:59:53

这是我的问题的答案。

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

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

Here are the answer to my questions.

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

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.

铁轨上的流浪者 2024-10-08 01:59:53

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.

嘿咻 2024-10-08 01:59:53

我认为您不能在服务器端使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文