如何知道c#UdpClient使用的端口号? [重复]

问题描述 投票:6回答:3

这个问题在这里已有答案:

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

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

c# port udpclient
3个回答
15
投票

以下是我的问题的答案。

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

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


2
投票

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.