5

只有在 64 位(Windows 7 终极版)上运行时才会出现这个奇怪的异常,而不是在运行 32 位 Win7 终极版时。目前它在 java 版本 1.6.0_26 上运行

running server!
java.net.SocketException: select failed
 at java.net.PlainSocketImpl.socketAccept(Native Method)
 at java.net.PlainSocketImpl.accept(Unknown Source)
 at java.net.ServerSocket.implAccept(Unknown Source)
 at java.net.ServerSocket.accept(Unknown Source)
 at Server.main(Server.java:18)

这是代码:

//import java.net.ServerSocket;
//import java.net.Socket;
import java.io.*;
import java.net.*;




public class Server {


 public static void main(String[] args) {
 System.out.println("running server!");
  int nreq = 1;
  try{
   ServerSocket sock = new ServerSocket(7337);
  for(;;){
   Socket newsock = sock.accept();
   System.out.println("Creating thread...");
   Thread t = new ThreadHandler(newsock, nreq);
   t.start();
   nreq++;
  }
  }

  catch(Exception e)
  {

   e.printStackTrace();

  }
 }
}

在线引用的错误指向该位:

Socket newsock = sock.accept();
4

3 回答 3

1

您肯定会遇到 Windows 7 和您安装的 Java SDK 版本的问题。从 oracle 网站下载并安装最新版本的 Java SDK 7。看看是否有帮助。

于 2012-11-17T23:19:26.513 回答
0

当 JVM 和操作系统不匹配时,这些问题可能会发生。一个运行 32 位,另一个运行 64 位。

于 2012-11-17T23:17:45.113 回答
0

认为问题出在 Java 32 位与 64 位之间。

问题可能是 Windows 32 位与 Windows 64 位,但是:

还:

1) 请尝试使用此 JVM 选项运行:

  • -Djava.net.preferIPv4Stack=true

2) 请确保您已安装64 位版本的 Java

于 2012-11-17T23:20:21.850 回答