ServerSocketデフォルト邦定IP
2790 ワード
詳細
開発中にサービス側を開く必要がある場合、ローカルテストは直接ポートを書き、実際の環境でも邦定のIPを指定する必要があります.
サーバにとって、ネットワークカードが1つだけではない場合がありますが、私たちのシステムは指定されたIPとポートを通じて通信しているに違いありません.そのため、サービス側が使用するIPとポートはプロファイルを定義する必要があります.
では、通常のテストでは、IPが指定されていない場合、Server Socketはいったいどこに定着しているのでしょうか.
この場合、サーバはこのポートを0.0.0.0にバインドします.すなわち、すべてのIPにバインドし、各ipに要求を受信することができます.0.0.0.0とは何か、ここでは言わない.
次はテストプログラムです.次のプログラムで、どのような状況なのかを見ることができます.
印刷結果は次のとおりです.
127.0.0.1を使用すると、結果が印刷されます.
192.168.1.1.1100を使用すると、結果が印刷されます.
デフォルトの国が0.0.0.0に設定されていることがわかります.この場合、本パソコンにマークできるIPを使用して8888ポートにアクセスできます.
もちろん、これもデュアルNICの検証ではありません.まだ1つのNICで遊んでいるからです.条件のあるものはブレードに行って少し測定することができます.
ITEYEサイトでjava小強オリジナルを見てください.ありがとうございます.http://cuisuqiang.iteye.com/ !
自作ブログアドレス:http://www.javacui.com/あ、内容はITEYEと同期!
開発中にサービス側を開く必要がある場合、ローカルテストは直接ポートを書き、実際の環境でも邦定のIPを指定する必要があります.
サーバにとって、ネットワークカードが1つだけではない場合がありますが、私たちのシステムは指定されたIPとポートを通じて通信しているに違いありません.そのため、サービス側が使用するIPとポートはプロファイルを定義する必要があります.
では、通常のテストでは、IPが指定されていない場合、Server Socketはいったいどこに定着しているのでしょうか.
この場合、サーバはこのポートを0.0.0.0にバインドします.すなわち、すべてのIPにバインドし、各ipに要求を受信することができます.0.0.0.0とは何か、ここでは言わない.
次はテストプログラムです.次のプログラムで、どのような状況なのかを見ることができます.
package test;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class Test {
public static void main(String[] args) throws Exception {
SocketClient client = new SocketClient();
new Thread(client).start();
ServerSocket serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress(8888));
// serverSocket.bind(new InetSocketAddress("127.0.0.1",8888));
// serverSocket.bind(new InetSocketAddress("192.168.1.100",8888));
System.out.println(serverSocket.toString());
serverSocket.accept();
}
}
class SocketClient implements Runnable{
public void run() {
try {
Thread.sleep(2000);
try {
Socket socket = new Socket("127.0.0.1", 8888);
System.out.println("127.0.0.1 " + socket.toString());
} catch (Exception e) {
System.err.println("127.0.0.1 ");
}
try {
Socket socket = new Socket("192.168.1.100", 8888);
System.out.println("192.168.1.100 " + socket.toString());
} catch (Exception e) {
System.err.println("192.168.1.100 ");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
印刷結果は次のとおりです.
ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=8888]
127.0.0.1 Socket[addr=/127.0.0.1,port=8888,localport=59213]
192.168.1.100 Socket[addr=/192.168.1.100,port=8888,localport=59214]
127.0.0.1を使用すると、結果が印刷されます.
ServerSocket[addr=/127.0.0.1,port=0,localport=8888]
127.0.0.1 Socket[addr=/127.0.0.1,port=8888,localport=59416]
192.168.1.100
192.168.1.1.1100を使用すると、結果が印刷されます.
ServerSocket[addr=/192.168.1.100,port=0,localport=8888]
127.0.0.1
192.168.1.100 Socket[addr=/192.168.1.100,port=8888,localport=59429]
デフォルトの国が0.0.0.0に設定されていることがわかります.この場合、本パソコンにマークできるIPを使用して8888ポートにアクセスできます.
もちろん、これもデュアルNICの検証ではありません.まだ1つのNICで遊んでいるからです.条件のあるものはブレードに行って少し測定することができます.
ITEYEサイトでjava小強オリジナルを見てください.ありがとうございます.http://cuisuqiang.iteye.com/ !
自作ブログアドレス:http://www.javacui.com/あ、内容はITEYEと同期!