TCP Verbindung überwachen/auslesen

  • Antworten:2
proufed
  • Forum-Beiträge: 1

04.06.2016, 11:51:12 via Website

Hallo Leute,

folgende Problematik: Meine App soll mit einem Gerät über TCP kommunizieren können. Der Server schickt zu zeitlich nicht definierten Zeitpunkten verschiedene Kommandobefehle an den Client. Auf diese Kommandos soll der Client mit unterschiedlichen Aktionen reagieren.

Wie setze ich dies nun am besten um ?

Ich habe jetzt mittels asyncTask eine Verbindung zum Server aufgebaut. Nun müsste ich die einzelnen erhaltenen Nachrichten auslesen (Die ersten 4 Bytes geben mir die Paketlänge an, die darauffolgenden 4 Bytes den Kommandobefehl).

Bisher mache ich es so, dass der asyncTask mir die Verbindung erstellt und anschließend in einer Endlosschleife die TCP-Verbindung abhört. (Schlechter Stil ? / Besere Alternative ? ). Der einkommende Traffic wird in einem Bytearray gespeichert.

Wie gebe ich die über TCP erhaltene Nachricht nun am besten weiter ? (Direkt an die Mainactivity oder an einen anderen asyncTAsk der mir die Nachricht verarbeitet?)

Muss ich nicht auch irgendwie sicherstellen, dass das Bytearray nicht durch ein direkt folgende Nachricht überschrieben wird ?

mit freundlichen Grüßen.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

04.06.2016, 13:01:29 via App

Das mit dem AsyncTask und der Endlosschleife passt schon.
Um die Daten in den ManThread zu bekommen, musst du ein Callback benutzen.
Dafür liest du am besten mal im Inet nach.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
pepperonas
  • Forum-Beiträge: 434

04.06.2016, 21:23:59 via Website

Hier ein kleines Beispiel (den Builder kannst du dir wegdenken und einfach direkt eine Referenz deiner MainActivity an den AsyncTask übergeben, dass deine Main dann den Listener implementieren muss, liegt auf der Hand, da du so über deine erhaltenen Daten informiert werden willst..)

Open Source

Antworten