サーバー アプリケーションがあるとします。接続は TCP 経由で、UNIX ソケットを使用します。
接続は非同期です。つまり、クライアントとサーバーのソケットはノンブロッキングです。
次の状況を想定してください: 状況によっては、サーバーが接続されたクライアントにデータを送信し、すぐに接続を閉じることを決定する場合があります: with を使用shutdown
しSHUT_RDWR
ます。
だから、私の質問は - クライアントが呼び出すときにrecv
、(サーバーによって送信された) データを受け取ることが保証されていますか?
または、データを受信するには、サーバーの?recv
の前に呼び出す必要があります。shutdown
もしそうなら、データがクライアントによって受信されることを確認するために、何をすべきですか (より正確には、これをどのように行うべきですか)?