ネイティブ C++ コードを使用して、複数のネットワーク アダプターを備えた Windows マシンで UDP ブロードキャストを実行する必要があります (代わりに、理想的にはマルチキャストにする必要があることを認識しています)。
現在、ソケットに SO_BROADCAST ソケット オプションを設定してブロードキャストを許可し、INADDR_BROADCAST アドレス (255.255.255.255) に送信しています。これは、複数のネットワーク アダプタを備えたマシンでは確実に機能しません。
私はいろいろと調べていて、Stack Overflow でこれに関するたくさんの質問を見つけました。私が知る限り、最良のアプローチは、各ネットワーク アダプターのブロードキャスト IP を把握し、各ネットワーク アダプターに送信する IP をループすることです。
したがって、たとえば、マシンに IP アドレスが 10.0.0.x のネットワーク アダプターと 192.168.1.x の別のネットワーク アダプターがある場合、メッセージを 10.0.0.255 と 192.168.1.255 に送信する必要があります。
私が調べたすべての質問/回答にもかかわらず、ドットを接続して上記のアドレスのリストを取得することはできませんでした.
誰かが私を正しい方向に向けることができますか? たとえば、GetAdaptersAddresses を使用して IP アドレスを列挙するサンプル コードをいくつか見つけましたが、各アドレスのサブネット マスクをどこで取得できるかわかりません。サブネット マスクがないと、ブロードキャスト アドレスを特定できません。送信先のブロードキャスト アドレスのリストを作成できるように、IP アドレスのリストとそれぞれのサブネット マスクが必要です。