2

C++Builder2006 の使用

これらのことを行う古い小さなプログラムを変更しています。

  1. UDP ブロードキャスト メッセージを送信する (255.255.255.255 アドレスを使用)
  2. 接続されているすべてのデバイス (RabbitCore RCM3200 を搭載したハードウェア) から応答を取得します。
  3. 必要に応じて、それらのいずれかの MAC アドレスと、そのデバイスがそれ自体に設定する必要がある正しいネットワーク構成を含む別の UDP メッセージをブロードキャストします。

(これは、デバイスがインストール時に間違った IP/ネットマスクを持つ可能性があり、IP に依存しない方法で設定する必要があるためです。これは、デバイス プロデューサーから確立された方法であるため、変更することはできません。私が何をしているかを説明します)。

私が直面している問題は、ここでよく説明されています。要するに、Win7 はすべてのインターフェイスを介して UDP メッセージを送信するのではなく、「優先」インターフェイスのみを介して送信します。プログラムは Indy UDPClient ソケット (TIdUDPClient) を使用してビルドされているので、そのままにしておきたいと思います。

質問:

  1. 特定のネットワーク インターフェイスを介して送信するように UDP ソケットを「強制」する方法はありますか? このようにして、「手動で」ループしてブロードキャストをすべての(関連する)ネットワークに送信できます
  2. そうでない場合....同じ結果を得るにはどうすればよいですか?
4

1 に答える 1

4

特定のネットワーク インターフェイスを介して送信するように UDP ソケットを「強制」する方法はありますか?

TIdUDPClientBoundIPその正確な目的のためのプロパティがあります。アダプタごとに異なるオブジェクトをバインドしない限り、TIdUDPClient.Binding.CloseSocket()を変更するたびに呼び出す必要があります。BoundIPTIdUDPClient

このようにして、「手動で」ループしてブロードキャストをすべての(関連する)ネットワークに送信できます

使用している Indy のバージョンに応じて、TIdStack.LocalAddressesプロパティ、TIdStack.AddLocalAddressesToList()またはTIdStack.GetLocalAddressList()メソッドを使用して、ループスルーできる使用可能なローカル IP アドレスのリストを取得できます。

于 2016-05-05T17:23:53.277 に答える