Wirklich einfacher TCP-Client

8

Ich möchte mit meiner App in die URL meines Servers eingeben, z. http://192.168.1.8/ und der Port z.B. %Code%. Wenn mein Server die TCP-Anforderungsnachricht empfängt, sendet er eine Datei zurück (der Server ist bereits implementiert).

Ich denke, dass ich nicht etwas kompliziertes wie eine AsyncTask brauche, da ich die Verbindung nicht behalten möchte. Beim Empfang der Antwort vom Server muss meine Verbindung geschlossen werden.

Jede Angabe für einen Weg nach vorne oder einen Tipp wird sehr geschätzt.

    
G.V. 02.07.2016, 17:30
quelle

2 Antworten

18

Hier ist ein einfacher TCP-Client, der Sockets verwendet, die ich basierend auf Code in dieses Tutorial (den Code für das Tutorial finden Sie auch in diesem GitHub-Repository ) .

Beachten Sie, dass dieser Code dazu dient, Zeichenfolgen zwischen dem Client und dem Server zu senden, normalerweise im JSON-Format.

Hier ist der TCP-Client-Code:

%Vor%

Deklarieren Sie einen TcpClient als eine Mitgliedsvariable in Ihrer Aktivität:

%Vor%

Verwenden Sie dann eine AsyncTask, um eine Verbindung zu Ihrem Server herzustellen und Antworten auf dem Benutzeroberflächenthread zu empfangen (Beachten Sie, dass vom Server empfangene Nachrichten in der Methodenüberschreibung onProgressUpdate() in der AsyncTask behandelt werden):

%Vor%

Um die Verbindung zu Ihrem Server zu starten, führen Sie die AsyncTask:

aus %Vor%

Senden Sie dann eine Nachricht an den Server:

%Vor%

Sie können die Verbindung zum Server jederzeit schließen:

%Vor%     
Daniel Nugent 02.07.2016, 18:10
quelle
3

Danke für den Code. Aber es hat ein Problem mit dem Empfang von Daten .. benötigt daher wenig update:

  1. In der Datei "TcpClient.java" sollte der Befehl "run ()" durch das folgende Codefragment ersetzt werden:

    public void run () {

    %Vor%

// Der Rest des Codes ist OK, siehe Original

  1. doInBackgroud in Ihrer MainActivity.java postet die empfangene Nachricht an onProgressUpdate, Sie können es in einem anderen Objekt z. TextView

    %Vor%

// "Antwort" ist TextView-Objekt in Ihrer Funktion deklariert

%Vor%

und Funktion

protected void onCreate(Bundle savedInstanceState) { response = (TextView) findViewById(R.id.textView); //..so on

    
RAIMA 18.06.2017 15:55
quelle

Tags und Links