我正在连接一个发送UDP数据包的系统,这些数据包既可以作为响应(发送到特定的IP地址),也可以作为广播(目标地址为255.255.255.255,根据WireShark)。
我可以正确地接收“直接”的数据包,但我不知道如何获取广播数据包。我猜想我需要一个具有不同绑定的第二个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标签,我表示歉意;-)