2011-01-13 90 views
1

现在,我想远程连接,我只想知道为什么服务器告诉我它没有IP地址。Java ServerSocket。为什么IP地址是0.0.0.0,但我仍然可以远程连接?

Server started: ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=13380] 

相关代码:

private ServerSocket  serverSocket = null; 
private Thread    thread   = null; 
private int     clientCount  = 0; 

/** 
* Constructor 
* 
*/ 
public ControlListener(int port) 
{ 
    try 
    { 
     System.out.println("Binding to port " + port + ", please wait ..."); 
     this.serverSocket = new ServerSocket(port); 
     System.out.println("Server started: " + this.serverSocket); 
     start(); 
    } 
    catch (IOException ioe) 
    { 
     System.out.println("Can not bind to port " + port + ": " + ioe.getMessage()); 
    } 
} 

从链接:http://pirate.shu.edu/~wachsmut/Teaching/CSAS2214/Virtual/Lectures/chat-client-server.html例如4就是我跟着

+0

我不认为这是一个问题。值“0.0.0.0”并不意味着您的服务器没有IP地址。它只是说它正在监听每个接口(或者你的机器可能有的ip地址) – 2011-01-13 20:24:41

回答

5

您绑定到任何地址,这意味着您正在所有接口上侦听。您可以接受来自服务器上任何已定义接口的连接,包括本地主机和您在多宿主的情况下定义的任何IP地址。

你可以绑定到127.0.0.1,只接受来自localhost的连接。您可以绑定到特定的IP地址,并只接受该接口上的连接。

0

这是一个通配符,表示您的插座会接受你的主机的每个网络适配器上的请求。

您可以通过在构建时定义专用网络地址来限制该行为。

1

0.0.0.0表示正在使用所有ips。如果您尝试远程连接,请确保打开您在防火墙和/或路由器中使用的端口。

相关问题