ServerSocket默認(rèn)邦定IP實(shí)現(xiàn)過(guò)程詳解
開發(fā)中需要開啟服務(wù)端的時(shí)候,本地測(cè)試都是直接寫端口,實(shí)際環(huán)境也是需要指定要邦定的IP才可以。
因?yàn)閷?duì)于服務(wù)器來(lái)說(shuō),有時(shí)它不止一塊網(wǎng)卡,而我們系統(tǒng)一定是通過(guò)指定的IP和端口進(jìn)行通信的,所以服務(wù)端所使用的IP和端口都需要定義配置文件。
那么在平常測(cè)試時(shí),在沒有指定IP的情況下,ServerSocket到底邦定到哪里了?
在這種情況下,服務(wù)器會(huì)把此端口綁定到0.0.0.0上面,即在所有IP上面都綁定,即能在每個(gè)ip上面收到請(qǐng)求。至于0.0.0.0是什么,這里就不說(shuō)了。
下面是一個(gè)測(cè)試程序,通過(guò)如下程序即可看到到底是怎么樣的情況:
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都可以訪問(wèn)到8888端口。
當(dāng)然,這也不是雙網(wǎng)卡的驗(yàn)證,因?yàn)檫€是在一個(gè)網(wǎng)卡上玩。有條件的可以到刀片機(jī)上小測(cè)一把。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
rsync?server服務(wù)端配置文件?rsyncd.conf參數(shù)詳解
前兩篇文章我們已經(jīng)探討了rsync的原理及基本使用,今天我們來(lái)介紹一下rsync?server端的配置文件,如果你還沒有學(xué)習(xí)rsync的原理及安裝使用,那么就可以參考下面的文章2024-06-06
git沖突解決_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了git沖突解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
Vestacp免費(fèi)VPS主機(jī)控制面板的安裝與使用教程
Vestacp除了為我們搭建網(wǎng)站提供簡(jiǎn)潔易用的管理面板外,還為我們提供了免費(fèi)郵局功能和VPS性能監(jiān)控,幫助我們更好地管理VPS服務(wù)器,提供可視化的網(wǎng)站管理面板,非常適合多用戶使用。2017-07-07
集群運(yùn)維自動(dòng)化工具ansible的安裝與使用(包括模塊與playbook使用)
Ansible是一款很好的基于ssh方案的,替代品,他能夠大大簡(jiǎn)化Unix管理員的自動(dòng)化配置管理與流程控制方式。它利用推送方式對(duì)客戶系統(tǒng)加以配置,這樣所有工作都可在主服務(wù)器端完成。2014-07-07
DaemonSet服務(wù)守護(hù)進(jìn)程的使用場(chǎng)景
這篇文章主要為大家介紹了使用DaemonSet服務(wù)守護(hù)進(jìn)程的使用場(chǎng)景講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多計(jì)步2022-03-03
Elasticsearch6.2服務(wù)器升配后的bug(避坑指南)
這篇文章主要介紹了Elasticsearch6.2服務(wù)器升配后的bug問(wèn)題及解決方法,可以幫助有其他人避坑,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09
采用軟件負(fù)載均衡器實(shí)現(xiàn)web服務(wù)器集群(iis+nginx)
我用nginx實(shí)現(xiàn)網(wǎng)站負(fù)載均衡測(cè)試的例子,windows下IIS做負(fù)載實(shí)測(cè)2016-04-04

