0

私には状況があります-

確立された状態のA->B間にTCP接続があります。Aは数バイトをBに送信してから、自身を終了します。Bはsend()もrecv()も実行していません。

接続が切断されていることを知る方法があるかどうか知りたいのですが。

接続が切断された場合、recv()は「0」を返すことを私は知っています。しかし、上記の状況では、AがBにデータを送信したため、最初の(1つまたは複数の)recv()が送信されたデータを返し、最後にrecv()==0を取得します。 recv-bufferからすべてのデータをポンプアウトする必要なしに、接続が切断されました。

  1. 着信FIN/RSTパケットに関する通知を受け取りたいのですが
  2. キープアライブを有効にしているので、キープアライブパケットがパートナーから応答されなくなったときに通知を受け取りたい

ありがとう、Sandeep

4

1 に答える 1

0

ライブ接続を確認したい場所ならどこでも試すことができsend(fd, buf, 0, 0)ます。つまり、0 バイトのデータを送信します。接続が切断された場合、失敗します。

于 2012-08-27T14:34:16.773 に答える