J'essaie d'écouter sur un port en utilisant ServerSocket
sur un appareil Android. Je veux être en mesure de se connecter à ce port via WiFi en utilisant un ordinateur sur le même réseau.Impossible d'utiliser ServerSocket sur Android
je reçois pas d'exception lors de la liaison à un port, mais quand je vérifie netstat il dit:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 (null):4040 (null):* LISTEN
J'ai essayé d'innombrables façons de le liant à localhost, 0.0.0.0, le réseau local WiFi IP adresse de l'appareil avec SocketInetAddress
et InetAddress.getByName
. Rien ne semble fonctionner.
Lorsque je tente de se connecter au port à partir d'un ordinateur dans le même connexion Wi-Fi (je l'ai essayé à la fois netcat et Java de Socket.connect()
), tout ce que je peux voir dans Wireshark est une requête ARP:
Who has [phone's LAN address]? Tell [computer LAN address].
Cette demande de se répéter jusqu'à expiration du délai.
J'ai essayé l'inverse, en réglant la ServerSocket sur l'ordinateur et en me connectant à ce port à partir du téléphone, cela fonctionne très bien.
Mon téléphone de test est un Samsung Spica i5700 avec une ROM personnalisée.
Des idées?
Edit: Le code est simple comme ceci:
ServerSocket server = new ServerSocket();
server.setReuseAddr(true);
server.setTimeout(0);
server.bind(new InetSocketAddress(4040));
Socket client = null;
while((client = server.accept()) == null);
// Connected
enter code here
enter code here
Pouvez-vous montrer un code? Définissez-vous la bonne autorisation dans le fichier manifeste? – Flo
J'ai mis à jour la question avec du code. Oui, j'ai mis la permission INTERNET dans le manifeste. – shuwo
'ServerSocket.accept()' ne peut pas renvoyer de valeur null. – EJP