2016-10-16 6 views
1

Ich versuche, eine Nachricht zwischen zwei Android-Telefonen über das lokale Netzwerk zu übertragen. Ich lese Sockets, wo ein guter Weg, dies zu tun. (ich kann Bluetooth nicht benutzen) (ich kann NFC auch nicht benutzen)Client-Socket, der keine Verbindung zum Server-Socket herstellt

Ich habe eine Server- und Klientenanwendung aufgebaut.

Eine App hat einen Server, der auf eine Verbindung wartet.
Die andere App hat einen Client, der versucht, eine Verbindung herzustellen, wenn eine Taste gedrückt wird.

Beide Manifestdateien enthalten die richtigen Berechtigungen. (Mit den HTML-Tags)
verwendet Zulassungs android: name = "android.permission.INTERNET"/
verwendet-permission> android: name = "android.permission.ACCESS_NETWORK_STATE"/

habe ich den Server online zuerst:

 ServerSocket myServerSocket = new ServerSocket(27024); 
     System.out.println("Server is waiting for incoming connection on host=" + InetAddress.getLocalHost().getCanonicalHostName() + ", port=" + myServerSocket.getLocalPort()); 
     Socket socket = myServerSocket.accept(); 

Dann versuchen und mit dem Kunden zu verbinden.

  String host = "localhost"; 
      int port = 27024; 

      try{ 
       System.out.println("Client attempting to connect to server at host: " + host + ", port: " + port); 
       Socket socket = new Socket(host, port); 

       //This below line never gets called :(
       System.out.println("Client socked created! Now trying to send data to server"); 

       } 

In meiner Konsole:
vom Client zum Server auf dem Host zu verbinden versucht: localhost, Port: 27024

Der "Client erstellt socked!" Linie wird nie ausgegeben.

Beide Hosts sind auf "localhost" eingestellt und die Portnummer ist identisch.
Ich habe verschiedene Ports ausprobiert, aber nichts passiert.

Antwort

1
String host = "localhost"; 
int port = 27024; 

Sie erkennen, dass Ihr Client die IP-Adresse des Servers angegeben werden muss, nicht wahr?

Hinweis Sie werden wahrscheinlich nicht in der Lage sein oder jemals eine App auf einer nicht WiFi-Schnittstelle binden sollten.

+0

aber Client und Server sind im lokalen Netzwerk, der localhost? – snowy500

+0

'localhost' bezieht sich auf das Gerät, auf dem die Anwendung ausgeführt wird, und die Adresse lautet immer' 127.0.0.1', eine lokale Schleife zurück. Mit dieser Adresse verlassen Pakete das Gerät nie. Sie müssen die IP-Adresse jedes Geräts auf der anderen Seite verwenden. –

+0

oh Gott, das macht mich dumm, ich verstehe jetzt, warum die Jungs Beispiel arbeitete ich sah auf Youtube - weil er den Client und Server von einer Maschine ausgeführt wurde. – snowy500

Verwandte Themen