使用websocket连接到Android服务器

时间:2016-06-23 10:25:53

标签: android networking netty mqtt

我在Android手机(Motorola Moto 3g,Android 6.0)上运行MQTT Broker / Server(它是moquette的修改版本),它通过端口1883上的标准连接和通过端口的websocket连接接受请求9001。

当我尝试使用MQTT websocket客户端连接服务器运行的同一台电话上的服务器时,一切正常(主机127.0.0.1和端口9001)。

但是,如果我尝试连接到相同本地网络的笔记本电脑连接到服务器,则会失败。如果我在笔记本电脑上创建热点WiFi并通过手机连接到它,也是一样。

快速NMap扫描似乎显示手机上的9001端口已关闭:

Starting Nmap 7.01 ( https://nmap.org ) at 2016-06-23 12:20 CEST
Nmap scan report for 10.100.100.134
Host is up (0.0038s latency).
PORT     STATE  SERVICE
9001/tcp closed tor-orport

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

所以我的猜测是服务器正在侦听错误的界面(我在adb日志中找到了这个DEBUG io.netty.util.NetUtil - Loopback interface: lo (lo, ::1%1),但它似乎不是问题,请参阅this stackoverflow answer)或者我需要在手机上手动打开端口,但我在谷歌上没有发现任何相关内容。

1 个答案:

答案 0 :(得分:3)

您的问题是您强制代理仅侦听环回接口:

prop.setProperty("port", "1883"); 
prop.setProperty("websocket_port", "9001"); 
prop.setProperty("host", "127.0.0.1"); 
prop.setProperty("allow_anonymous", "true");

您需要将其更改为以下内容:

prop.setProperty("port", "1883"); 
prop.setProperty("websocket_port", "9001"); 
prop.setProperty("host", "0.0.0.0"); 
prop.setProperty("allow_anonymous", "true");

0.0.0.0表示所有接口,其中127.0.0.1只是环回