[問題] new Socket IP帶port怎麼宣告?

作者: sohumi (皮老闆)   2016-10-13 13:31:46
一般建立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的寫法,
該如何解決?
作者: toosakarin (~*嵐*~)   2016-10-13 14:14:00
router設定portforwarding
作者: cs8425 (cs)   2016-10-13 14:25:00
建構子第2個參數就是port了啊 請查API說明
作者: ssccg (23)   2016-10-13 14:35:00
NAT設定是port 9000轉到192.168.1.2:3333,對外部來說就只有port 9000,沒有3333
作者: ch8154 (yalan)   2016-10-13 15:08:00
要用外部IP,port也要用對外的啊,除非你的外部port 3333是NAT到區網ip的3333
作者: sohumi (皮老闆)   2016-10-13 15:44:00
192.168.1.2是一台VM, 開放3333~4444間可以建立socket連線主要是希望能達到 連線->外部ip:9000->轉到192.168.1.2->在port 3333~4444間建立連線.外部ip只是一個橋樑,但有多台VM,所以使用port轉送到特定VM
作者: pttworld (批踢踢世界)   2016-10-13 16:01:00
嘗試"220.74.3.xxx", 9000
作者: ssccg (23)   2016-10-13 21:14:00
你NAT port怎麼設,都跟外面要連上去沒有關係對外就是只有9000,你在port帶3333只會變成連到router上的3333 port,跟你的內網其他host的port一點關係都沒有連線>外部IP:9000就是Socket(外部IP,9000)接下來怎麼轉都是NAT設定的,跟連線那個Socket沒關係了

Links booklink

Contact Us: admin [ a t ] ucptt.com