【问题标题】:How to know the port number used by c# UdpClient? [duplicate]如何知道c#UdpClient使用的端口号? [复制]
【发布时间】:2011-05-05 22:12:38
【问题描述】:

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

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

【问题讨论】:

    标签: c# port udpclient


    【解决方案1】:

    这是我的问题的答案。

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

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

    【讨论】:

    • 遗憾的是,至少在 .NET 4.0 中,系统从不设置 UDP 套接字的端口字段。而且由于它是一个 get-only 属性,你也不能手动设置它。
    • 哎呀。我应该说:绑定时系统没有在RAW UDP Sockets上设置端口。它适用于 DGRAM 套接字。
    【解决方案2】:

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

    有关如何正确使用 UdpClient 的简单示例,另请参阅 MSDN UdpClient

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2020-09-20
        • 2018-11-07
        • 1970-01-01
        • 2013-02-04
        • 1970-01-01
        • 2017-07-06
        • 1970-01-01
        • 1970-01-01
        • 2012-01-25
        相关资源
        最近更新 更多