java socket绑定ip_ServerSocket 默认邦定IP
轉自:http://cuisuqiang.iteye.com/blog/2037769
開發中需要開啟服務端的時候,本地測試都是直接寫端口,實際環境也是需要指定要邦定的IP才可以。
因為對于服務器來說,有時它不止一塊網卡,而我們系統一定是通過指定的IP和端口進行通信的,所以服務端所使用的IP和端口都需要定義配置文件。
那么在平常測試時,在沒有指定IP的情況下,ServerSocket到底邦定到哪里了?
在這種情況下,服務器會把此端口綁定到0.0.0.0上面,即在所有IP上面都綁定,即能在每個ip上面收到請求。至于0.0.0.0是什么,這里就不說了。
下面是一個測試程序,通過如下程序即可看到到底是怎么樣的情況:
Java代碼??
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();
}
}
}
此時的打印結果是:
Java代碼??
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時打印結果:
Java代碼??
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.100時打印結果:
Java代碼??
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端口。
當然,這也不是雙網卡的驗證,因為還是在一個網卡上玩。有條件的可以到刀片機上小測一把。
總結
以上是生活随笔為你收集整理的java socket绑定ip_ServerSocket 默认邦定IP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 驾校管理html5模板,驾校学员管理系统
- 下一篇: 常见的UI设计素材模板