2016-06-23 13 views
0

Ich bin ein MQTT Broker/Server (es ist eine modifizierte Version von moquette) auf einem Android-Handy (Motorola Moto 3g, Android 6.0), die Anfrage über Standard-Verbindung auf dem Port 1883 und Websocket akzeptieren Verbindung über Port 9001.Verbinden mit einem Android-Server mit Websocket

Wenn ich versuche, eine Verbindung mit dem Server auf dem gleichen Telefon, auf dem der Server läuft mit einem MQTT Websocket Client läuft alles (mit Host 127.0.0.1 und Port 9001).

Aber, wenn ich versuche, eine Verbindung mit dem Server mit meinem Laptop verbunden mit dem gleichen lokalen Netzwerk schlägt es fehl. Dasselbe gilt, wenn ich ein Hotspot-WLAN auf meinem Laptop erstelle und eine Verbindung mit dem Telefon herstelle.

Ein schneller NMap Scan scheint zu zeigen, dass der 9001-Anschluss am Telefon geschlossen ist:

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 

Also meine Vermutung ist, entweder der Server auf der falschen Schnittstelle hört (ich diese DEBUG io.netty.util.NetUtil - Loopback interface: lo (lo, ::1%1) im adb Protokoll gefunden , aber es scheint nicht das Problem zu sein, siehe this stackoverflow answer) oder dass ich den Port manuell am Telefon öffnen muss, aber ich habe nichts über Google gefunden.

+0

Was 'Host' Wert haben Sie in Ihrer mosquette Konfigurationsdatei? – hardillb

+0

Ich verwende in Speicher Konfigurationsdatei mit der Eigenschaften-Klasse, und die Eigenschaften sind: 'prop.setProperty (" port "," 1883 "); \t \t prop.setProperty ("websocket_port", "9001"); \t \t prop.setProperty ("Host", "127.0.0.1"); \t \t prop.setProperty ("allow_anonymous", "true"); ' – Maeln

Antwort

3

Ihr Problem ist, dass Sie den Broker zwingen nur auf die lokale Schleife zu hören:

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

Sie müssen es folgende Änderungen:

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 stellt alle Schnittstellen, an denen als 127.0.0.1 ist nur der Loopback

Verwandte Themen