iT邦幫忙

0

Java Socket 別的網路IP無法連線 (已解決)

Java Socket 別的網路IP無法連線

我有兩台電腦 兩支手機 安卓跟iphone 有各自的電信網路

在我主要電腦上 同時執行ServerSocket伺服器端 跟 client客戶端 可以連線

下面演示一下 伺服器端跟客戶端 最基本的語句 也可以執行
────────────────────────────────
一台電腦同時操作伺服器跟客戶

伺服器端
ServerSocket server = new ServerSocket(6000);
Socket socket1 = server.accept();
System.out.println("有人連接到");
---不同Class---
客戶端
try {
Socket client = new Socket("127.0.0.1",6000); //是可以連線到的
}catch (IOException e) {
System.out.println(e);
}
────────────────────────────────────────────
然後在我另一台電腦上執行 +另一支手機網路

客戶端
try {
Socket client = new Socket("192.168.43.105",6000);

}catch (IOException e) {
System.out.println(e);
}

//"192.168.43.105" 是我從網頁上查詢我的IP的位置 我手機是浮動IP 有時候會變更
// 也就是我主要電腦的伺服器IP

這時候就會報錯出現
java.net.ConnectException: Connection timed out: connect

我已經關閉兩台電腦防火牆 依舊無法
https://ithelp.ithome.com.tw/upload/images/20210602/2013751970jPJHZpzx.jpg

請問有大神知道解答嗎? 或是指引哪一個方向給我 謝謝

────────────────────────────────────────────
解答應該已經出來了 我在這裡先小結論 有大大要補充的歡迎哦

網路有分
實體ip、虛擬ip 也稱public ip 跟 private ip

其中 實體ip、又有分浮動IP、固定IP

我的手機是4G行動網路 IPv4的Private IP 固然沒辦法Socket向外連

另外電信4G網路也有開放固定IP申請的服務

你有向電信申請固定IP的SIM卡嗎?如果沒有,你的IP就是NAT化的內網IP
我是浮動IP的SIM卡 4G網路
然後我也有試查手機狀態內的IP 好像叫私有IP吧 10.XX.XXX.XXX 開頭的
套用進去Socket client = new Socket("10.XX.XXX.XXX ",6000); 也無法連線

2 個回答

1
cmwang
iT邦大師 1 級 ‧ 2021-06-02 17:33:37
最佳解答

行動網路一般都只會給IPv4的Private IP,要架server的話要另外想辦法....

了解 非常謝謝您的回答
所以一般架設Socket 伺服器端 大部分都是用有線網路的IP是吧?

cmwang iT邦大師 1 級 ‧ 2021-06-03 10:01:00 檢舉

不管架什麼server,只要想能從Public Internet連上的話,能拿到Public IP是比較簡單的辦法,如果只有Private IP的話,就必須取得網路上游的合作幫你作port forwarding之類(通常就是要付錢啦),不過既然能取得網路上游的合作,那直接給Public IP不是更方便嗎XD....

1
japhenchen
iT邦大師 1 級 ‧ 2021-06-03 11:12:00

我知道的是中華電信可以申請一個固定IP的SIM卡,當然會有一些書面申請的動作,其他的電信業者沒問過

我用來抓指紋機的出退勤記錄用的,PORT超過1000,沒問題

japhenchen大師你好
想請問您固定IP的SIM卡 是不是使用ServerSocket架設伺服器呢?
也謝謝你的回答~

沒有限定哦,但你要買NCC審驗法規通過的4G或5G分享器才行,不能直接用手機(手機有的會做防火牆保護)

我要發表回答

立即登入回答