質問

クライアントは、サーバからの多くのデータがない場合、TCP接続のシャットダウンのような大丈夫です、最初のソケットを閉じます

FIN -->
   <-- ACK
   <-- FIN, ACK
ACK -->

サーバーがデータを送信しbusyingされている場合:

FIN -->
    <-- ACK,PSH
RST -->

とサーバの接続状態をCLOSE_WAITと長い時間のためにそこにハングアップしています。

ここでの問題は何ですか?クライアント関連またはサーバーに関連しますか?これは、ローカルソケット用Redhat5で発生します。

この<のhref = "http://blog.netherlabs.nl/articles/2009/01/18/the-ultimate-so_linger-page-or-why-is-my-tcp-not-reliable" のrel =「nofollowをnoreferrer」>の記事は、「RST」が送られている理由について話が、サーバー接続がCLOSE_WAITに付着した理由を私は知らない、と出てFINを送信しません。

[EDIT]私は、これはQEMUのslirpネットワークエミュレーションで発生し、最も重要な情報を無視していました。密接に対処するためのslirpのバグの問題のようです。

役に立ちましたか?

解決 3

この知られている<のhref = "http://www.archivum.info/qemu-devel@nongnu.org/2008-06/00029/%5BQemu-devel%5D-%5BPATCH%5D-Proposed-fix -broken-RST応答ツーslirpリダイレクト-socket.html」REL = "nofollowをnoreferrer"> QEMUの欠陥の

他のヒント

これは、クライアントが読み終えていないことを、ストリーム内の左側の未読データがあることを意味します。

あなたはSO_LINGERオプションを使って、それを強制することができます。 ここではLinux用の関連文書に(もオプション自体を参照して、<のhref = "HTTPです://linux.die.net/man/7/socketここを」のrel = "nofollowをnoreferrer">)、およびWin32用[ここマッチング機能2だ]

これはオープン残っているサーバー側なので、それは、サーバー側でだあなたはSO_LINGERを無効にしてみてくださいすることができます。

これは、サーバーがソケットを閉じていないことを意味するかもしれません。あなたは簡単にTCPソケットが含まれますそのプロセスによって、開いているファイル記述子を一覧表示する「lsofを」を使用してこれを伝えることができます。この修正は、それが終了していますとき、常にソケットを閉じるプロセスを持つことである(でも、エラーケースなどで)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top