2016-04-10 11 views
0

標準のクライアントサーバーの状況があります。クライアントはサーバーに接続し、サーバーはselect()(またはそれに準ずるもの)を使用して複数のクライアント接続を管理します。すべてがPOSIXシステムレベルのネットワーキングAPIを使用します。TCP接続を閉じる前にメッセージを送信する方法[POSIX]

時々、サーバーは接続を閉じる必要があります。サーバーがソケットを閉じる前にクライアントにメッセージを送信し、クライアントに接続が閉じられた理由を通知できるようにします。

これを行うにはどうすればよいですか?

単純な方法では、単にサーバーにメッセージを書き込み、その後閉じる(close())が、クライアントが接続が閉じられたために書き込みエラーが発生する可能性があるため、問題があると思いますクライアントがサーバーによって書き込まれた最終メッセージを読む機会を得る前に、サーバーを起動します。

この場合、またはすべてが読み取られるまでクライアントが書き込みエラーを受け取らないことを確認できますか?

良い方法がありますか?

可能であれば、私はPOSIX仕様のみに基づいたソリューションを好むでしょう。

答えて

2

サーバが必要です。

  1. はメッセージを書きます。
  2. shutdownを呼び出して接続の書き込み側をシャットダウンします。
  3. クライアントから送信されたすべてのデータが読み取られるように、通常のシャットダウンを検出するまで接続からの読み取りを続けます。
+0

クール、それは意味があります。 –

関連する問題