[问题] 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