1

接收连接时出错:java.net.SocketException:线程“Thread-698”中的无效参数异常 java.lang.RuntimeException:未在 java.lang 的 Handin2.ConnectionHandlerImpl.run(ConnectionHandlerImpl.java:124) 处建立输入/输出。线程运行(线程.java:722)

我一直在寻找这个例外。似乎到处都可以得出结论,如果您使用 JVM 选项进行编译,-Djava.net.preferIPv4Stack=true它将解决问题。但它不适合我。我正在运行 IntelliJ 并尝试使用套接字和线程实现 Chord 系统。这是捕获并抛出上述异常的地方:

if(this.remote == null || this.node == null) {
    throw new RuntimeException("Connection handler has not been properly "
                + "initalialized");
}
try{
    if(this.out == null) {
      this.out = new ObjectOutputStream(remote.getOutputStream());
    }
    if(this.in == null) {
      this.in = new ObjectInputStream(remote.getInputStream());
    }
} catch(IOException e) {
      System.out.println("Trying to make input/output for remote " + remote);
      System.err.println(node.getKey()/Constants.NORMALIZE_KEY+": Error receiving connection: " + e.toString());
      return false;
}

我不知道是否需要更多代码片段来提供帮助,但我只是迷失在这个异常上,因为搜索时的解决方案根本没有帮助。

关于触发此错误的任何提示?套接字异常被给定的 try-catch 块捕获为 IO 异常的特例

4

1 回答 1

1

如果您使用 JVM 选项 -Djava.net.preferIPv4Stack=true 进行编译,它将解决问题。

否。如果您使用该 JVM 选项执行。与编译器无关。

于 2013-02-18T01:34:49.927 回答