ServerSocketデフォルト邦定IP


詳細
開発中にサービス側を開く必要がある場合、ローカルテストは直接ポートを書き、実際の環境でも邦定の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と同期!