广播到255不起作用,UDP广播到计算的广播地址导致崩溃

时间:2015-04-13 09:54:25

标签: c# udp

我正在努力让动态服务器检测工作。我的代码在我的计算机上使用IpAddress.Broadcast(255.255.255.255)与服务器和客户端时都有效。但是,当我将其中一个组件移动到另一台计算机时,广播地址255.255.255.255不再起作用(我不再得到任何结果)。

我使用子网计算器计算了网络的广播地址。 广播地址是:x.x.x.191。 另一台计算机的IP是:x.x.x.119

当我使用直接IP时,它确实有效。当我使用计算的广播IP时,我的程序崩溃(错误消息:远程主机拒绝连接)。

客户代码:

            var Client = new UdpClient();
            var RequestData = Encoding.ASCII.GetBytes("Request ParkXManagementSystem IP");
            var ServerEp = new IPEndPoint(IPAddress.Any, 0);

            Client.EnableBroadcast = true;
            while (serverFound == false)
            {
                //Client.Send(RequestData, RequestData.Length, new IPEndPoint(IPAddress.Broadcast, 8888)); //Broadcast to 255.255.255.255

                IPAddress address = IPAddress.Parse("x.x.x.191"); //Broadcast adres
                //IPAddress address = IPAddress.Parse("x.x.x.119"); // direct adres
                Client.Send(RequestData, RequestData.Length, new IPEndPoint(address, 8888));                    

                var ServerResponseData = Client.Receive(ref ServerEp);
                var ServerResponse = Encoding.ASCII.GetString(ServerResponseData);

                if (ServerResponse.ToString().ToLower().Contains("parkxmanagement"))
                {
                    //Server is found!
                    serverFound = true;
                    //Enable button to login
                    mUiContext.Post(UpdateGUI, BTTN_LogIn);
                    Properties.Settings.Default.parkXManagementSystemIP = ServerEp.Address.ToString();
                    Properties.Settings.Default.Save();
                    Properties.Settings.Default.Upgrade();
                }
            }

我已经有了一个动态计算广播地址的库,但出于测试目的,我在这里硬编码了。

我的猜测是崩溃了,因为我已将IP端点绑定到广播地址,但返回的地址不是广播地址。 所以我想我需要为子网中的每个地址创建一个端点?

0 个答案:

没有答案