Java ServerSocket未绑定到端口
我有一个服务器代码,它试图根据给定的端口范围获得一个空闲端口-Java ServerSocket未绑定到端口,java,sockets,port,Java,Sockets,Port,我有一个服务器代码,它试图根据给定的端口范围获得一个空闲端口- private ServerSocket allocatePort() throws IOException { ServerSocket server = null; for (int i=0; i<serverPortRange; i++) { int port = serverPort.intValue()+i; try { server = new
private ServerSocket allocatePort() throws IOException {
ServerSocket server = null;
for (int i=0; i<serverPortRange; i++) {
int port = serverPort.intValue()+i;
try {
server = new ServerSocket(port);
break;
} catch (IOException e) {
log.debug(String.format("DCServer could not allocate port %s", port));
}
}
if (server == null) {
throw new IOException();
}
return server;
}
private ServerSocket allocatePort()引发IOException{
serversocketserver=null;
对于(int i=0;i,Java可以为您提供以下功能:
创建绑定到指定端口的服务器套接字。端口为0
在任何空闲端口上创建套接字
谢谢,我知道这项功能,但在本例中,我实际上对提供服务器套接字的特定范围感兴趣。将代码中的第6行替换为以下3行:server=new ServerSocket();server.setReuseAddress(true);server.bind(new InetSocketAddress(“127.0.0.1”,port));只需使用新的ServerSocket(port)在JRE版本和操作系统平台之间不是很稳定。谢谢,我尝试了你的建议,但仍然没有绑定端口。两个客户端是否同时运行此代码?如果是,则没有任何一个客户端在日志中记录错误?因为同一台机器上的两个服务器套接字不能同时绑定到同一个端口。为什么客户端不能同时运行此代码是否为服务器设置了侦听端口?这是为服务器设置的。设置reuseAddress=true与问题的明确意图相反,因此这不是一个答案。其余的都是胡说八道。绑定到127.0.0.1是不必要的,除非您想限制谁可以连接,这在问题中也没有提到,而绑定到INADDR_ANY(默认设置)是不必要的非常“稳定”,与你的说法相反