-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 でリッスンしています。このコードの 2 番目のインスタンスを実行すると、JVM は IOException をスローする必要があると思いますが、スローしませんでした。

私のコードの何が問題なのですか? 助けてください。注: このシナリオ (2 つの JVM) で実行する必要があります。

4

3 に答える 3

1

break;while ループを中断し、while ループを終了します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 に答える