あなたは、クライアント側のネットワーク接続を無効にするとするCSocketは、OnCloseのかOnReceiveを受信しません

StackOverflow https://stackoverflow.com/questions/1908634

  •  19-09-2019
  •  | 
  •  

質問

私はC ++のCSocketと、クライアント・サーバ・アプリケーションを作成しました。タスクマネージャでそれを私はクライアントをサーバーに接続し、その後、私は、通常のXボタンまたは終了タスクとクライアントを閉じると、サーバーのCSocketは、OnCloseのイベントを受け取ります。問題は、私は、クライアントが実行されているWindows上でのインターネット接続を無効にすると、サーバのCSocketは、OnCloseのもOnReceiveイベントを受信しないで!

は、誰もが、おそらく何が起こっているのか知っていますか?

アップデート:私はちょうどテストし、クライアントがあまりにもOnCloseのを受け取るなかったことを見てきました!私は、クライアントが実行されているWindows上でのインターネット接続を無効に!

役に立ちましたか?

解決

クライアント側は、FINまたはRSTを介してサーバへの接続を閉じることができずにシャットダウンです。サーバは、クライアントが死んでいることを検出するために、それは、送信するデータを持っている必要がありますいずれか(失敗した)または定期的なTCPキープアライブプローブを送信する必要があります。 TCP_KEEPALIVEは、ソケットオプションとして設定することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top