在我的客户端-服务器应用程序中,我正在创建一个带有 ipaddress 和端口号的 Socket。
最初,当我们运行客户端应用程序时,会建立与服务器的套接字。但是在客户端应用程序多次关闭和启动后,它抛出异常并且没有创建套接字(即使存在具有指定 ipaddress 的系统)。
我无法追踪错误。你能建议我,我哪里出错了吗?
在我的客户端-服务器应用程序中,我正在创建一个带有 ipaddress 和端口号的 Socket。
最初,当我们运行客户端应用程序时,会建立与服务器的套接字。但是在客户端应用程序多次关闭和启动后,它抛出异常并且没有创建套接字(即使存在具有指定 ipaddress 的系统)。
我无法追踪错误。你能建议我,我哪里出错了吗?
不要绑定到客户端中的特定端口。只需让实现选择要绑定的端口即可。
尝试设置 Socket.setSoLinger(false, 0) 以便立即关闭套接字。
它可能取决于操作系统,但是当您的应用程序开始拒绝建立新的连接运行netstat.exe
(Windows) 时,您会看到很多处于TIME_WAIT
状态的 TCP 连接。TCP 连接在关闭后进入此状态并保持一段时间。这意味着当您快速打开/关闭它们时,操作系统可能会用完免费连接。