如何使用Indy10 TIdUDPClient接收广播数据包?

时间:2012-11-06 20:43:15

标签: delphi udp c++builder indy10

我正在连接到一个发送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标记道歉; - )

1 个答案:

答案 0 :(得分:5)

TIdUDPClient不适用于接收广播。请改用TIdUDPServer