我在其中一个java库中看到以下逻辑来测试localhost上的socket的打开:
ServerSocket socket = new ServerSocket(port);
socket.close();
我的问题是,当没有数据包发送并且套接字在打开后立即关闭时,此套接字会导致本地主机上的TIME_WAIT状态吗?在这种情况下,如果应用程序尝试绑定到同一个端口,如果在2MSL值内完成,它会导致'地址已在使用错误'吗?
我写了一个像上面这样的小测试程序,但是当我在运行这个程序的linux机器上netstat或ss时,我根本看不到这个端口的TIME_WAIT。即使套接字未用于发送任何数据包,状态机也不应该应用吗?
答案 0 :(得分:1)
TIME_WAIT是连接中的状态。您尚未创建连接, ergo 您永远无法访问TIME_WAIT。