2011-01-13 8 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アドレス)を聞いているということです。 –

+0

BTW:ポート0も特別なケースです。それを試して、何が起こるかを見てください。 ;) –

答えて

5

すべてのインターフェイスでリッスンしている任意のアドレスにバインドしました。 localhostやマルチホームの場合に定義したIPアドレスなど、サーバー上の定義済みのインターフェイスからの接続を受け入れることができます。

127.0.0.1にのみバインドし、localhostからの接続のみを受け入れることができます。特定のIPアドレスにバインドし、そのインターフェイス上の接続のみを受け入れることができます。

0

を踏襲するものです。

構成時に専用のネットワークアドレスを定義することで、その動作を制限することができます。

1

0.0.0.0すべてのipsが使用されていることを意味します。リモート接続しようとしている場合は、ファイアウォールやルーターで使用しているポートを開いてください。

関連する問題