送信する前にピアがソケットをシャットダウン/クローズしたかどうかを検出する直接コマンドはありますか?
私はこれをします:
int sendResult = send( mySD, bufferPtr, numberToSend, MSG_NOSIGNAL );
send()
メッセージを喜んで受け入れて送信しているように見えます(正の戻り値)。次にメッセージを送信しようとしたときにのみエラーが返されます。つまり、警告1のメッセージが遅すぎます。
はい、select()
事前に使用していますが、ピアがシャットダウンしても1を返します。
recv()
回避策として、を呼び出す直前に0バイトの読み取りを実行できます。これにより、send()
「接続OK」(-1)または「ピアシャットダウン」(0)が通知され、ほとんどの作業が実行されます。
int readTest = recv( mySD, NULL, 0, MSG_DONTWAIT | MSG_PEEK );
しかし、セマンティックの観点からは、実際に送信したいときに読むのは「間違っている」と感じます。実際に必要なのは単なるテストです。では、「ソケットステータス」など、必要なものを直接把握できるコマンドはありますか?社内で使うのはどういうこと?recv()