我正在使用 Linux Mint 14 KDE。我已成功创建 Java tcp 服务器和客户端,服务器 IP:端口为 10.10.1.10:9900,我的客户端 IP:端口 10.10.1.10:9901。当我第一次连接我的客户端时,一切正常。客户端连接并发送一些数据并断开连接。当我在断开连接后立即尝试将客户端与服务器连接时,我得到下一个异常。
java.net.BindException: Address already in use
如果我等待超过 1 分钟,一切正常。在其他论坛上,我读到关闭套接字后有一个 60 秒(1 分钟)的 tcp time_wait。将其更改为 0 后一切正常(如果有人想更改它,只需在/etc/sysctl.conf中添加这一行net.ipv4.tcp_fin_timeout=0并在终端中以 root service network restart的身份执行这一行)。第二天我试着再做一次测试,我得到了同样的例外。我检查了时间是否仍然是 0(你可以通过在命令行cat /proc/sys/net/ipv4/tcp_fin_timeout以 root 身份写入来检查它)并且它是 0。我仍然需要等待 1 分钟才能重新连接客户端。
有人可以帮我如何配置这种方式,这样我就不会得到这个异常。等待 1 分钟对于实时应用来说太长了。我知道我可以通过让操作系统动态分配空闲端口号来做到这一点,但这不是我的应用程序需要的。