什么可能导致“IO错误java.net.SocketException:select failed”?

我的笔记本电脑上运行的服务器程序,相同的路由器和相同的代码。 它工作正常,客户可以连接。 然而,当我将工作区复制到我的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

我因为权限而遇到了这个问题。 我更习惯于Linux,我需要检查IPTables的设置(或禁用它),权限,例如绑定到端口<1024的非root用户。我相信在Windows上你会想检查你的用户的管理权限和你的Windows防火墙。