既知のポートにバインドし、それ自体をマルチキャストグループに追加し、クライアントの要求をリッスンするUDPサーバーがあります。(サーバーはWindows上にあり、WSARecvFromを使用して、クライアントデータグラムの重複受信を発行します。)クライアントは、既知のポートとマルチキャストIPアドレスでサーバーにメッセージを送信します。
ラップトップで「サーバー」をテストすると、ラップトップが「スリープ」状態になると、サーバーの受信ソケットがマルチキャストアドレスから「バインド解除」されることに気付きました(そのため、クライアントはマルチキャストアドレスに送信し、受信されなくなります)。 。ただし、127.0.0.1のポートへの送信は引き続き受信されるという点で、ソケットは引き続き受信しています。Windowsはエラーを示しません。(サーバーソケットはINADDR_ANYにバインドされています。)
「サーバー」はピアツーピアアプリケーションの一部であり、自動検出に使用されます。したがって、この状況は予想されるほど珍しいことではありません。
サーバーがマルチキャストアドレスに送信せずにマルチキャストアドレスをアクティブにリッスンしているかどうかを判断する方法を提案できますか(これにより、ネットワーク上のすべての「サーバー」に不要なトラフィックが発生します)。考えられる解決策の1つは、マルチキャストに使用されるアダプターのIPアドレスに送信することですが、これを判別する方法がわかりません。