状況は以下の通りです: 私はJavaアプリケーションを持っています。これは、TCP上でTCPスタックを持つマイクロコントローラと通信します。コントローラ上のスタックはうまく動作し、これを並べ替えることができます。Javaソケット:Socket.close()はWindowsとMacで異なる接続を終了しますか?
問題:コントローラへの接続を終了するとき、私は単にsocket.close()
を使用し、接続は終了します。問題はありません。私のMacではこれも動作しますが、私がWiresharkをチェックすると、正規終了プロセス[FIN,ACK]
- [ACK]
がありますが、それに続いて[TCP Dup ACK]
パケットがあります。これはWiresharkが要求しているので、[FIN,ACK]
パケットに属します。これはMacでのみ発生し、私のMacまたはネットブックのVM上のWindowsマシンでは発生しません...
このDup-ACKパケットを送信させないようにするための調整がありますか?クローズドセッションがまだアクティブであると主張し、コントローラーに10回接続した後、スタックには新しい接続を受け入れる余地がなくなります。
誰かが私にヒントを与えることができれば本当に感謝しています!
どのMac OSのバージョンですか? – Daniel
Mac OS 10.6.6、Javaバージョン1.6.0_22 –