作者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/cn.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