socketjava服务器socket在绑定到同一端口时不会引发IOException
我的代码有如下问题。 代码:
int port = 14205; // begin port
// Try to bind socket on any port<br>
while(true){
try {
InetSocketAddress isa = new InetSocketAddress(port);
Log.logFile("bind port = " + port);
// ss is a ServerSocket object
ss.bind( isa );
break;
} catch (IOException e) {
Log.logFile("exception");
port++;
}
}
我在同一台机器(win7x64)上同时在JVM1.7和JVM1.6上运行了这段代码。使用CurrPorts工具调查我们正在侦听的端口。 结果:我们正在监听同一端口14207。 我认为JVM在运行此代码的第二个实例时必须抛出IOException,但它没有
我的代码怎么了? 请帮忙。 注意:我必须在这个senario中运行(2个JVM)
# 1 楼答案
break;
将中断while循环并退出while循环,毫无疑问将捕获exception
。但是,当您试图捕获异常时,需要将异常消息打印到日志文件中换掉这个
用这个
# 2 楼答案
好的!我会回答我的问题。 这是JVM错误。有关更多信息,请参阅Oracle bugbase: http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=71f70e71266a551ce53dcda4a050c?bug_id=7174699
# 3 楼答案
你的循环在第一次绑定后中断