-1

我的代码有如下问题。代码:

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)上同时在 JVM 1.7 和 JVM 1.6 上运行此代码。使用 CurrPorts 工具来调查我们正在监听的端口。结果:我们在同一个端口 14207 上进行监听。我认为 JVM 在运行此代码的第二个实例时必须抛出一个 IOException,但它没有。

我的代码有什么问题?请帮忙。注意:我必须在这个 senario(2 个 JVM)中运行。

4

3 回答 3

1

break;将打破你的 while 循环并退出 while 循环,并且没有关于 catch 的问题exception。但是,当您尝试捕获异常时,您需要将异常消息打印到日志文件。

替换这个

Log.logFile("exception");

有了这个

Log.logFile("exception"+ e.toString());
于 2013-01-09T05:14:33.663 回答
1

您的循环在第一次绑定后中断。

于 2013-01-09T05:17:22.360 回答
0

好的!我会回答我的问题。这是 JVM 错误。更多信息请参考 Oracle 漏洞库:http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=71f70e71266a551ce53dcda4a050c?bug_id= 7174699

于 2013-01-14T05:32:44.077 回答