【问题标题】:Aut discovering of ip address自动发现ip地址
【发布时间】:2013-08-09 11:39:30
【问题描述】:

我有一个服务器和一个客户端,它们通过 UDP 套接字相互通信。服务器正在打开端口 10002 并正在侦听传入的数据报。

为了让客户端获取服务器 IP,它会发送一个广播数据报,服务器会响应该数据报。负责查找服务器ip地址的客户端代码如下所示:

    private IPEndPoint GetServerEP(TimeSpan timeout, UdpClient udpclient)
    {
        IPEndpoint server = new IPEndPoint(IPAddress.Broadcast, 10002);
        byte[] data = GetDiscoverDatagram();

        _udpclient.EnableBroadcast = true;
        udpclient.Send(data, data.Length, server);

        try
        {
            udpclient.Client.ReceiveTimeout = (int)timeout.TotalMilliseconds;
            udpclient.Receive(ref server);
        }
        catch (SocketException e)
        {
            string msg = string.Format("Server did not respond within {0} ms", timeout.TotalMilliseconds);
            throw new TimeoutException(msg, e);
        }

        return server;
    }

运行此程序后,我可以看到服务器实际上接收到广播数据报,并以绑定到与客户端发送的相同端口的数据包进行响应。但是,客户端没有收到任何内容并超时。

我错过了什么?

【问题讨论】:

    标签: udp ip-address udpclient


    【解决方案1】:

    愚蠢的我(或;愚蠢的防火墙)。该代码有效,但防火墙阻止了来自服务器的响应数据包。禁用一切后就像一个魅力。

    【讨论】:

      猜你喜欢
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-03
      • 2012-06-17
      • 1970-01-01
      • 2014-05-06
      • 2012-01-02
      相关资源
      最近更新 更多