情況如下: 我有一個Java應用程序,它通過TCP與TCP控制器上的TCP堆棧進行通信。控制器上的堆棧工作正常,我可以將其解決。Java套接字:Socket.close()在Windows和Mac上終止不同的連接?
問題是:當我終止與控制器的連接時,我只需使用socket.close()
並且連接終止,沒有問題。在我的Mac上,這也適用,但是當我檢查Wireshark時,有正常的終止過程[FIN,ACK]
-[ACK]
,但後面跟着一個[TCP Dup ACK]
數據包,Wireshark聲稱屬於我的[FIN,ACK]
數據包。這隻發生在Mac上,並沒有發生在我的Mac或我的上網本上的虛擬機上的Windows機器上...
有沒有我可以用來不讓這個Dup-ACK數據包被傳輸的任何調整?實際上,它通過聲稱關閉的會話仍處於活動狀態並在連接到控制器10次後,堆棧沒有更多的空間來接受新的連接,從而在控制器中猛拉堆棧。
如果有人能給我一個提示,我會非常感激!
哪個Mac OS版本? – Daniel 2011-02-09 12:36:04
Mac OS 10.6.6,Java版本1.6.0_22 – 2011-02-09 13:05:13