在localhost上打开并立即关闭ServerSocket将导致TIME_WAIT?

时间:2016-10-18 09:56:08

标签: sockets tcp serversocket time-wait

我在其中一个java库中看到以下逻辑来测试localhost上的socket的打开:

 ServerSocket socket = new ServerSocket(port);
 socket.close();

我的问题是,当没有数据包发送并且套接字在打开后立即关闭时,此套接字会导致本地主机上的TIME_WAIT状态吗?在这种情况下,如果应用程序尝试绑定到同一个端口,如果在2MSL值内完成,它会导致'地址已在使用错误'吗?

我写了一个像上面这样的小测试程序,但是当我在运行这个程序的linux机器上netstat或ss时,我根本看不到这个端口的TIME_WAIT。即使套接字未用于发送任何数据包,状态机也不应该应用吗?

1 个答案:

答案 0 :(得分:1)

TIME_WAIT是连接中的状态。您尚未创建连接, ergo 您永远无法访问TIME_WAIT。