我有一个简单的逻辑 Java 来检查端口是否已在使用中:
public static boolean isPortInUse(int port)
{
ServerSocket socket = null;
try {
socket = new ServerSocket(port);
socket.setReuseAddress(true);
} catch (Exception e) {
return true;
}
finally
{
if (socket != null) {
try {
socket.close();
} catch (Exception e) {
return true;
}
}
}
return false;
}
我是套接字编程新手,所以我无法理解该方法的用途"setReuseAddress"
这里。我已经经历过这个链接 http://download.java.net/jdk7/archive/b123/docs/api/java/net/ServerSocket.html#setReuseAddress%28boolean%29但我不清楚它的目的。
这个解释来自涉及一些低级套接字属性和协议的 TCP 机制,基本上有一个名为 SO_REUSEADDR 的选项,您在创建套接字时使用该方法定义设置重用地址()启用或禁用此行为。
当前的解释非常明确here https://stackoverflow.com/questions/3229860/what-is-the-meaning-of-so-reuseaddr-setsockopt-option-linux,看看那里。还API http://docs.oracle.com/javase/6/docs/api/java/net/ServerSocket.html#setReuseAddress%28boolean%29有很好的解释
只需作为可以使用该方法修改的配置参数即可。
在绑定套接字之前启用 SO_REUSEADDR
bind(SocketAddress) 允许绑定套接字,即使
之前的连接处于超时状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)