2012-08-12 172 views
3

我有我的笔记本电脑上运行的服务器程序,相同的路由器和相同的代码。它工作很好,客户可以连接。然而,当我复制的工作空间我的电脑,当我运行它,我得到这个废话:什么可能导致“IO错误java.net.SocketException:选择失败”?

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) 

如果是相关的,我使用的是Windows 7 64位旗舰版这是给我的问题在PC上。它可以正常工作的笔记本电脑是Windows 7 32位。所以我唯一可以区分的是32位和64位。

这可能是相关的吗?我不明白。 http://forums.codeguru.com/showthread.php?522257-Windows-Sockets-64-bit

+0

听起来好像它说没有连接,并且因为它而引发异常。 – 2012-08-12 23:46:19

+0

哪一条是第18行? – cyroxx 2012-08-12 23:53:01

+0

你是什么意思?我现在在线使用同一台计算机。它只是打开端口来侦听传入的客户端连接,该程序不需要建立任何客户端 - 服务器连接来开始运行,甚至无法运行。 – ILikeWater 2012-08-12 23:53:01

回答

1

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

+0

它可能与此有关吗? http://forums.codeguru.com/showthread.php?522257-Windows-Sockets-64-bit – ILikeWater 2012-08-13 22:58:58

相关问题