日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java socket绑定ip_ServerSocket 默认邦定IP

發(fā)布時間:2025/3/21 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java socket绑定ip_ServerSocket 默认邦定IP 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自:http://cuisuqiang.iteye.com/blog/2037769

開發(fā)中需要開啟服務端的時候,本地測試都是直接寫端口,實際環(huán)境也是需要指定要邦定的IP才可以。

因為對于服務器來說,有時它不止一塊網(wǎng)卡,而我們系統(tǒng)一定是通過指定的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();

}

}

}

此時的打印結(jié)果是:

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時打印結(jié)果:

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時打印結(jié)果:

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端口。

當然,這也不是雙網(wǎng)卡的驗證,因為還是在一個網(wǎng)卡上玩。有條件的可以到刀片機上小測一把。

總結(jié)

以上是生活随笔為你收集整理的java socket绑定ip_ServerSocket 默认邦定IP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。