我正在写HTTP WEB服务器代码。意思就是,我必须对使用端口的重试策略进行编码,以便在该端口服务器上可以监听客户端的请求。如何编码服务器端的端口重试策略来监听客户端请求?
正常码:
serversocket = new ServerSocket(ServerSettings.port);
它抛出异常,如果ServerSettings.port
是不是免费的。
现在,我想添加重试策略,如果ServerSettings.port
不是免费的,请尝试其他端口。对于我写的一个代码,代码是S-如下,
更新的代码:
try {
serversocket = new ServerSocket(ServerSettings.port);
} catch (IOException io) {
try {
ServerSettings.port += 505;
serversocket = new ServerSocket(ServerSettings.port);
} catch (IOException io1) {
try {
ServerSettings.port += 505;
serversocket = new ServerSocket(ServerSettings.port);
} catch (IOException io2) {
log.info(new Date() + "Problem occurs in binding port");
}
}
}
但上面显示一个糟糕的编码技能,而不是专业的。
如何以专业的方式为端口编写重试策略,以便服务器可以在该端口上侦听?
也许把它包装在一个'while-loop'中,检查一个'boolean'类型变量,它告诉端口是否空闲?在创建对象之后:'portIsFree = true',并且再次尝试的条件是'portIsFree == false' – Novak 2013-05-06 09:09:55
@GuyDavid检查端口是否空闲的方法是什么? – devsda 2013-05-06 09:11:45
'ServerSocket'如果未能使用给定的端口,将会抛出异常,所以它不会在之后执行任何代码 - 它会通过设置'portIsFree = true;'的行并跳转到catch部分。循环将继续,因为'portIsFree'仍然设置为'false'。 – Novak 2013-05-06 09:14:20