java.net.NoRouteToHostException: Address not available
来源:2-2 Socket与TCP、UDP
他门说这就是人生
2021-06-28
老师,我刚关闭TCP客户端的socket连接就进行重连,会报以上错误,我应该怎样做到一断开连接就马上可以重连呢?
我网上搜到的解释是:
由于客户端连接端口用尽,无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放,而是处于 TIME_WAIT 状态,默认等待60s后释放。
ps: 我的客户端是安卓客户端,不是windows和linux,可以在Socket对象上直接设置吗?
写回答
1回答
-
一般来说关闭操作是一个业务的API操作,可能会立即返回,并中断业务的数据。但系统底层需要进行挥手和资源清理等操作,可能需要一定的时间才能重新利用该端口。
有2种办法解决:
客户端不固定端口,采用随机端口的模式链接服务器
客户端设置复用端口,但可能会存在链接后收到异常残留数据 sock.setReuseAddress(true);
122021-07-16
相似问题