楼主:
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:00NAT设定是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:00192.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没关系了