作者sohumi (皮老闆)
看板AndroidDev
標題[問題] new Socket IP帶port怎麼宣告?
時間Thu Oct 13 13:31:46 2016
一般建立Socket會使用以下方式
Socket socket = new Socket("192.168.1.2", 3333);
但若設備是由外部進入,則會先經過AP的port再轉到區網ip
舉例:
外部IP:220.74.3.xxx
在AP上設定port:9000轉到192.168.1.2
語法上會寫成
Socket socket = new Socket("220.74.3.xxx:9000", 3333);
則會出現
Unable to resolve host "220.74.3.xxx:9090": No address associated
with hostname
Socket似乎不接受IP:port的寫法,
該如何解決?
--
小陳:你有聽過樹懶叫的聲音嗎??
小張:沒有,不過我有看過樹懶趴的時候~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.224.184.184
推 ArSaBuLu:我上次看Discamry 樹懶應該不會叫才對吧... 12/07 19:07
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.54.215
※ 文章網址: https://webptt.com/m.aspx?n=bbs/AndroidDev/M.1476336726.A.E7F.html
1F:→ toosakarin: router設定portforwarding 10/13 14:14
2F:→ cs8425: 建構子第2個參數就是port了啊 請查API說明 10/13 14:25
3F:→ ssccg: NAT設定是port 9000轉到192.168.1.2:3333,對外部來說就只 10/13 14:35
4F:→ ssccg: 有port 9000,沒有3333 10/13 14:35
5F:推 ch8154: 要用外部IP,port也要用對外的啊,除非你的外部port 3333 10/13 15:08
6F:→ ch8154: 是NAT到區網ip的3333 10/13 15:08
7F:→ sohumi: 192.168.1.2是一台VM, 開放3333~4444間可以建立socket連線 10/13 15:44
8F:→ sohumi: 主要是希望能達到 連線->外部ip:9000->轉到192.168.1.2 10/13 15:46
9F:→ sohumi: ->在port 3333~4444間建立連線. 10/13 15:47
10F:→ sohumi: 外部ip只是一個橋樑,但有多台VM,所以使用port轉送到特定VM 10/13 15:47
11F:→ pttworld: 嘗試"220.74.3.xxx", 9000 10/13 16:01
12F:→ ssccg: 你NAT port怎麼設,都跟外面要連上去沒有關係 10/13 21:14
13F:→ ssccg: 對外就是只有9000,你在port帶3333只會變成連到router上的 10/13 21:15
14F:→ ssccg: 3333 port,跟你的內網其他host的port一點關係都沒有 10/13 21:15
15F:→ ssccg: 連線>外部IP:9000就是Socket(外部IP,9000) 10/13 21:17
16F:→ ssccg: 接下來怎麼轉都是NAT設定的,跟連線那個Socket沒關係了 10/13 21:17