3

UDP パケットを応答 (特定の IP アドレスに送信) とブロードキャスト (WireShark によると宛先 255.255.255.255) の両方として送信するシステムに接続しています。

「ダイレクト」パケットは正しく受信できますが、ブロードキャスト パケットを取得する方法がわかりません。異なるバインディングを持つ 2 番目の 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()います。1readerつは正常に動作しますが、broadcastReader->receiveBuffer()戻りません...

C++ コードと Delphi タグに関するお詫び ;-)

4

1 に答える 1

5

TIdUDPClientブロードキャストを受信するようには設計されていません。TIdUDPServer代わりに使用してください。

于 2012-11-06T23:11:11.187 に答える