2016-04-25 77 views
0

我有一个电脑运行运行多线程服务器插槽如下:的Java无法连接到服务器套接字

static void createServer() throws IOException { 
    //use this ip for other user 
    System.out.println(InetAddress.getLocalHost()); 
    // establish server socket 
    try { 
     ServerSocket s = new ServerSocket(8888); 

     while (true) { 
      Socket incoming = s.accept(); 
      Runnable r = new ThreadedEchoHandler(incoming, map); 
      Thread t = new Thread(r); 
      t.start(); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

}

从另一台计算机我尝试连接到服务器

然后(使用从第一台计算机的IP 192.168.162.1)如下:

public void registerCmnd(Scanner keys) throws IOException { 
    InetAddress ip = InetAddress.getByName("first computer ip"); 
    try (Socket s = new Socket(ip, 8888)) { 
     ..... 
     ..... 
    } 

} 

我得到一个java.net.ConnectException。

Exception in thread "main" java.net.ConnectException: Connection timed out: connect 
at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.<init>(Unknown Source) 
at java.net.Socket.<init>(Unknown Source) 
at User.registerCmnd(User.java:45) 
at User.main(User.java:28) 

任何想法?

+0

向我们展示堆栈跟踪。还有正在使用的IP地址,客户端和服务器端。 –

+0

连接是否被一台或另一台机器上的防火墙阻止? –

+0

我关闭了两台机器上的所有防火墙 – bzak

回答

0

您要么有错误的IP,端口不会被转发,要么两者都有。还要确保先运行服务器。

+0

服务器正在运行。我使用InetAddres.getLocalHost()方法获取第一台机器的ip。 – bzak

+0

什么是端口转发? – bzak

+0

如果一台计算机想要从另一个网络连接,则告诉您的路由器将该计算机连接到您 –

1

看起来问题不在于代码本身。

有许多的这种可能的原因,包括

  • 防火墙,客户端,服务器,管理程序栈,或网络阻止访问。

  • 您正在使用

  • 你(不是在这种情况下)

  • 在客户端使用了错误的服务器端口号您使用的是IP客户端服务器上的错误的IP地址地址不是从客户端路由到服务器。例如,如果服务器的IP是专用地址,并且客户端位于不同的网络上。

  • 有人在客户端或服务器上错误地配置了数据包转发(例如iptables)或路由(例如路由等)。或者别的地方。


如果我是你,我会看到一个计算机是否可以ping了,反之亦然。如果失败,请检查路由表。请注意,这是最有可能的一个网络配置问题,而不是一个编程问题。

+0

我从客户端计算机中ping服务器:数据包:sent = 4,Recieved = 1 – bzak

相关问题