2016-06-07 2 views
0

Ich versuche, eine Verbindung zu Java (Server) von Android-Handy (Client). Server Code:Client-Server-Anwendung: kann keine Verbindung zu Java-Server von Android-Handy

import java.net.*; 

/** 
* Created by mwalko on 07.06.16. 
*/ 
public class Main { 
public static void main(String[] args) 
{ 
    try 
    { 
     ServerSocket sock = new ServerSocket (8601); 
     for (;;) 
     { 
      Socket newsock = sock.accept(); 
     } 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
    } 
} 

Dann kann ich mit ihm von cURL sprechen:

curl localhost:8601 
Hello :: enter QUIT to exit 

From server: GET/HTTP/1.1. 

From server: Host: localhost:8601. 

From server: User-Agent: curl/7.47.0. 

From server: Accept: */*. 

From server: . 

Aber wenn ich versuche von Android zu verbinden, die auf diesem Code funktioniert (Ich habe auch <uses-permission android:name="android.permission.INTERNET" /> zu AndroidManifest.xml) :

new Thread() { 
     @Override 
     public void run() { 
      try { 
       Socket s = new Socket("192.168.1.102", 6000); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }.start(); 

ich einen Fehler:

06-07 20:09:03.530 7319-7319/com.example.root.client E/AndroidRuntime: FATAL EXCEPTION: main 
                    Process: com.example.root.client, PID: 7319 
                    06-07 21:45:20.990 25482-25520/com.example.root.client W/System.err: java.net.ConnectException: failed to connect to /192.168.1.102 (port 6000): connect failed: ECONNREFUSED (Connection refused) 

Ich kann 192.168.1.101 vom Telefon pingen. Warum kann ich keine Verbindung zum Server herstellen? Gibt es Fehler?

Antwort

1

Wenn Sie die Fehlermeldung in der Debug-Konsole lesen, wird es angezeigt.

failed to connect to /192.168.1.102 (port 6000): connect failed: ECONNREFUSED (Connection refused)

Ihr Server Code hat eine Buchse für den Port 8601, was bedeutet, es wird erwartet, fordert in diesem Hafen, nicht 6000. Ändern Sie Ihr Android-Anfrage Port 8601 oder Server-Listening-Port 6000.

Sie geben Sie auch an, dass Sie ping 192.168.1.101 können, aber in dem Java-Client erstellen Sie eine Verbindung zu IP 192.168.1.102. Beispiel: Wenn der Servercode unter 192.168.1.101 ausgeführt wurde, sollte jede Anforderung vom Android-Client (in diesem Fall 192.168.1.102) über den Port 8601 an 192.168.1.101 weitergeleitet werden, normalerweise wie folgt geschrieben: 192.168 .1.101: 8601

+0

Ja, das stimmt, was Sie geschrieben haben, aber es ist Bearbeitungsproblem. Ich versuchte beide Port (6000 und 8601) zu hören und zu verbinden, ich meine, ich habe Port 6000 in Client und 6000 auf Server dann beide auf 8601 geändert. Ich bin sicher, dass es ein Problem mit blockierten Ports oder etwas auf dem Router ist. Guter Beitrag sowieso! PS Ich ping 192.168.1.102 (Computer IP), mein Fehler – Michu93

Verwandte Themen