ServerSocket默認(rèn)邦定IP實(shí)現(xiàn)過程詳解
開發(fā)中需要開啟服務(wù)端的時(shí)候,本地測試都是直接寫端口,實(shí)際環(huán)境也是需要指定要邦定的IP才可以。
因?yàn)閷?duì)于服務(wù)器來說,有時(shí)它不止一塊網(wǎng)卡,而我們系統(tǒng)一定是通過指定的IP和端口進(jìn)行通信的,所以服務(wù)端所使用的IP和端口都需要定義配置文件。
那么在平常測試時(shí),在沒有指定IP的情況下,ServerSocket到底邦定到哪里了?
在這種情況下,服務(wù)器會(huì)把此端口綁定到0.0.0.0上面,即在所有IP上面都綁定,即能在每個(gè)ip上面收到請(qǐng)求。至于0.0.0.0是什么,這里就不說了。
下面是一個(gè)測試程序,通過如下程序即可看到到底是怎么樣的情況:
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(); } } }
此時(shí)的打印結(jié)果是:
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時(shí)打印結(jié)果:
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時(shí)打印結(jié)果:
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]
可以看到默認(rèn)邦定到的是0.0.0.0,此時(shí)使用任何能標(biāo)記到本臺(tái)電腦的IP都可以訪問到8888端口。
當(dāng)然,這也不是雙網(wǎng)卡的驗(yàn)證,因?yàn)檫€是在一個(gè)網(wǎng)卡上玩。有條件的可以到刀片機(jī)上小測一把。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Zookeeper 單機(jī)環(huán)境和集群環(huán)境搭建
這篇文章主要介紹了Zookeeper 單機(jī)環(huán)境和集群環(huán)境搭建過程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08阿里云申請(qǐng)的 CA Wosin 證書,在Windows iis下導(dǎo)入證書的步驟分享
這篇文章主要介紹了阿里云申請(qǐng)的 CA Wosin 證書,在Windows iis下導(dǎo)入證書的步驟分享,需要的朋友可以參考下2017-03-03selenium+chromedriver在服務(wù)器運(yùn)行的詳細(xì)教程
這篇文章主要介紹了selenium+chromedriver在服務(wù)器運(yùn)行的詳細(xì)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03iisapp.vbs iis pid了解對(duì)應(yīng)的網(wǎng)站或應(yīng)用池
有時(shí)候突然發(fā)現(xiàn)某個(gè)w3wp.exe進(jìn)程,占用較大的自由,想看看是哪個(gè)網(wǎng)站,然后再解決問題。下面是具體的方法。2009-10-10CentOS環(huán)境下單獨(dú)安裝apachebench的方法
這篇文章主要介紹了CentOS環(huán)境下單獨(dú)安裝apachebench的方法,分析了apachebench的安裝步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-10-10