我正在连接到一个发送UDP数据包的系统,包括响应(发送到特定IP地址)和广播(根据WireShark,目的地为255.255.255.255)
我可以正确接收'直接'数据包,但我无法弄清楚如何获得广播数据包。我假设我需要第二个具有不同绑定的TIdUDPClient,但我无法让它工作。
TIdUDPClient *reader(new TIdUDPClient(NULL));
TIdUDPClient *broadcastReader(new TIdUDPClient(NULL));
reader->Port = 2000;
reader->Host = "192.168.0.1";
reader->Connect();
broadcastReader->Port = 2000;
// broadcastReader->Host = "0.0.0.0"; // This doesn't work, but is here as an example
broadcastReader->BroadcastEnabled = true;
broadcastReader->Connect();
然后我有其他几乎相同的线程调用reader/broadcastReader->ReceiveBuffer()
。 reader
一个正常,但broadcastReader->receiveBuffer()
永远不会返回......
为C ++代码和Delphi标记道歉; - )
答案 0 :(得分:5)
TIdUDPClient
不适用于接收广播。请改用TIdUDPServer
。