socket()
システムコールで作成したソケットがあるとします。その後、私はconnect()
を行い、データの送受信を開始しました。send()/ recv()が失敗したとき。ソケットはどこにありますか?
同様に、もう一方の側では、socket()
システムコールでソケットが作成され、次にbind()
,listen()
およびaccept()
が呼び出されました。それから、この側もコミュニケーションを始めました。
ここで、send()
(したがって、反対側のrecv()
)のいずれかが失敗したとします。
失敗した後にそのソケットがどこに欲しいですか?
再び通信するために、私は再びソケットを作成し、(他の側にbind()
、listen()
とaccept()
)connect()
を行う必要がありますか、私は再びsend()
とrecv()
を試すことができますか?さらに、そのようなシナリオで実行するのが最善のことは何ですか?
注:send()
/recv()
が失敗する理由はわかりません。物理的なワイヤーブレイクから他の側への拒否(おそらくiptablesを使用して)は何でもかまいません。
壊れたネットワークから復旧すると、すべての戻り値がチェックされ、それに応じて手順が実行されますか? – Haris
@Harisあなたがチェックしたいと思うのは、 'send'が-1を返し、' errno'が 'ECONNRESET'です。他の値については、もう一度やり直すのが安全です。 – dbush
ありがとう。それが助けになりました。 – Haris