ブロードキャスト送信用のポートをリッスンしているUDPソケットがあり、正常に動作しています。UDPリスニングソケットは、ネットワーク構成の変更後にリッスンを停止します。
しかし、OSを休止して再開すると(Windows 7)、ソケットはデータの受信を停止します(Wiresharkを使用してデータが到着していることがわかります)。
これは、自分のIPアドレスを変更したり、ネットワークアダプタを無効にしたり、有効にしたりするようなネットワーク設定を変更した場合にも発生します。
OSは、休止状態になるとすべてのネットワークアダプタを無効にし、再開時に再び有効にするようです。
select
は、0
(タイムアウト)を返すだけで、データを受信していないときと変わりません。私はどこにでもこの行為への参照を見つけることができませんでした。
ソケットを閉じて再作成すると、再び動作します。
OSを再開しても、TCPリスニングソケットが正常に動作しています。
この状況をどのように検出して修正するかについてのアイデアはありますか?
EDIT:これはまだ直接アドレスデータを受信していますが、これ以上ブロドキャスト送信を受信しません。
EDIT2:はちょうど私があなたのコードが明示的に0.0」にソケットをバインドしていないと思う...私は(どこかにダミーパケットを送信する)ソケットに書き込む場合、それが再び動作を開始していること
関連するウィンドウのバージョンでタグを追加したい場合があります – jgauffin
ソケットがバインドされているアドレスは何ですか? – User