广播未到达主机

时间:2014-02-06 19:37:45

标签: c# broadcast

我需要几个C#(一个服务器和一个客户端)例程,允许我从PC上找到连接到子网的(WinCE)设备。尽管测试了几个例子,但我无法使广播起作用。

在设备上运行的是基于C#(Compact framework)的服务器,其代码如下所示:

public void SomeClass()
{

    IPEndPoint ipUDP = new IPEndPoint(IPAddress.Any, 5003);
    this.serverUDP = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
    this.serverUDP.Bind(ipUDP);
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 6001);
    this.epSender = (EndPoint)sender;
    this.serverUDP.BeginReceiveFrom(this.bufferUDP, 0, 20, SocketFlags.None, ref epSender, new AsyncCallback(someMethod), null);
}

在PC中,我运行的客户端应该使用广播消息调用这些服务器:

public static void Discover(ref string mensaje, string IPDestino, ref ArrayList equipos)
{            
    UdpClient client = null;
    try
    {
        client = new UdpClient(6001);

        byte[] toSend = Encoding.ASCII.GetBytes("FINDSTT");
        client.Send(toSend, toSend.Length, "255.255.255.255", 5003);

        //Some logic
    }
    catch (Exception ex)
    {
        //Some handling
    }
    if (client != null)
        client.Close();
}

问题是广播从未到达服务器。但是,如果我在client.Send()中更改特定地址的广播地址(255.255.255.255),则由服务器接收。但是这样,我失去了主要目标,那就是找到事先不知道的设备。

1 个答案:

答案 0 :(得分:0)

如果您的客户端在Windows 7/8下运行,问题可能在于操作系统处理零网络广播地址 255.255.255.255的方式。

如果是这种情况,那么this post may be of some help to you

另外,相关:

How to fix the global broadcast address (255.255.255.255) behavior on Windows?(Technet,Win7)

IPv4 broadcast problem(win8)