最近想做一个 Android app,作为服务端去监听电脑发过来的数据,在一个局域网是可以访问的,但我想如果手机没有连入 WiFi,那么电脑和手机还可以通信吗?前提是我知道 Android 手机的外网 ip,但是还是无法连接,不清楚什么原因。。。
1
raysonx 2018-01-16 09:59:46 +08:00 via Android
运营商 4G 给移动设备分配的都是内网 IP,使用对称 nat 和公网连接,而且设置有严格的防火墙策略。
除非将来放开 ipv6,否则不可能作 TCP listener |
2
jianleer 2018-01-16 10:02:42 +08:00
几乎大部分的终端设备分配的 IP 都不是公网 IP,也就是说你的手机和电脑在两个局域网中,一般的生产服务器是公网 IP 或者有转发,手机则不是,无法完成路由寻址的过程,所以这样是无法通信的
|
3
cctv1005s927 2018-01-16 10:03:19 +08:00
1,在你描述的这种情况里面,手机没有连入 wifi,手机电脑是不可通信的。
2,你说你知道你的安卓手机的外网 IP,你有想过这个外网 IP 是怎么来的吗?这个是路由器分配的一个动态 IP,相当于你看到的外网 IP 也只不过是另外一个局域网内的 IP 地址而已。 3,那在这种情况下如何让他们组网连接? 最基本的思想就是你们需要一个公有的服务器,在公网上有固定 IP 的东西,把他们串联起来。 推荐方法: ( 1 )使用『蒲公英』异地组网,我自己试过是有效的 ( 2 )买一台公网的 server,在上面搭建 vpn,多台设备连入 vpn,即可互通。(理论可行,未测试) |
4
YangJian1994 OP @raysonx 谢谢,了解了
|
5
YangJian1994 OP @jianleer 谢谢,我还是想得太简单了
|
6
YangJian1994 OP @cctv1005s927 谢谢,我准备用一个阿里云服务器试试。
|
7
FlyPuff 2018-01-16 10:17:54 +08:00 via Android
teamviewer PC 版上有个 VPN 服务,但是好像 Android 好像访问不到这个服务吧
|
8
iwtbauh 2018-01-16 10:19:57 +08:00 via Android
理论上存在 NAT 穿透的可能
参考 coturn |
9
iwtbauh 2018-01-16 10:20:51 +08:00 via Android
另外,如果 WiFi 的路由器分配到了公网 IP,可以使用 UPnP 打开防火墙端口
|
10
zpxshl 2018-01-16 10:33:54 +08:00 via Android
不能,可买服务器当电脑手机的中转站。之前的项目就是这样搞得。
|
11
linshiyouxiang 2018-01-16 10:42:09 +08:00 1
zerotier 穿透? 只测试够了. 实际项目 可以自建中转(zerotier)moon 服务器.
http://www.lucktu.com/archives/766.html |
12
autulin 2018-01-16 11:48:08 +08:00 via iPhone
想了一下,两个设备同时 VPN 到一个网,这样或许可以吧?
|
13
winglight2016 2018-01-16 12:41:24 +08:00
如果只是想实现数据双向发送,可以通过 http / socket 连接到第三方服务器然后长连接通讯
|
14
jyf 2018-01-16 12:49:19 +08:00
n2n 穿透没啥问题 不过总是要客户端麻烦
|
15
arafat5549 2018-01-16 16:40:23 +08:00
做 NAT 穿透 试试 webrtc
|
16
s82kd92l 2018-01-16 18:24:35 +08:00 via Android
仅仅是消息的话可用公用的 mqtt 服务器,客户端协议很全,天生用来做 IOT 长连接
|