我連接到發送UDP數據包,既作爲響應(發送到特定的IP地址)和廣播系統(DEST 255.255.255.255,根據的是Wireshark)如何使用Indy10 TIdUDPClient接收廣播數據包?
我可以接受「直接」包正確,但我無法弄清楚如何獲得廣播節目。我想我需要第二個具有不同綁定的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++代碼和德爾福標籤;-)
如果目標是接收未經請求的數據包,是不是需要* server *組件而不是*客戶端*? –
@RobKennedy - 看起來似乎 - 但是,我只對接收來自一個特定主機IP的廣播感興趣。不過,使用UDP等無連接協議的客戶端和服務器之間的區別似乎有點奇怪。 – Roddy