我有一个服务器程序在我的笔记本电脑、相同的路由器和相同的代码上运行。它工作正常,客户端可以连接。但是,当我将工作区复制到我的 PC 并运行它时,我得到了这样的废话:
IO 错误 java.net.SocketException: 选择失败
这是代码...
public static void main(String[] args) {
System.out.println("running server!");
int nreq = 1;
try{
ServerSocket sock = new ServerSocket(7331);
for(;;){
Socket newsock = sock.accept();
System.out.println("Creating thread...");
//Thread t = new ThreadHandler(newsock, nreq);
//t.start();
nreq++;
}
}
catch(Exception e)
{
System.out.println("IO error " + e);
}
基本上是什么导致此错误(我在网上找不到有用的信息)发生在一台 PC 而不是另一台 PC 上?它必须与PC本身有关。我最困惑。基本上它不能打开一个套接字?
这是完整的堆栈跟踪:
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)
如果相关,我在 PC 上使用的是 Windows 7 64 位 Ultimate,这给我带来了问题。它可以正常工作的笔记本电脑是 Windows 7 32 位。所以我能看出的唯一明显区别是 32 位和 64 位。
这可能是相关的吗?我不明白。 http://forums.codeguru.com/showthread.php?522257-Windows-Sockets-64-bit