Frage von mAin0x, 64

Was habe ich bei diesen C# Sockets falsch gemacht oder übersehen?

Der Serversocket: http://pastebin.com/vpeZe6cH

Und der ClientSocket: http://pastebin.com/sc4JCPk8

INFO:

  • Dies ist ein Echo Server, der aber auch Befehle ausführen kann!

  • Ich habe ein Bild angehängt, auf welchem man sieht, das die erste Message funktioniert, danach kommt jede Rückgabe des Servers eine Eingabe verspätet!

  • Ich lerne gerade erst TCP/Ip. Seit bitte nicht zu streng :D

Antwort
von EightSix, 23

Du darfst nicht davon ausgehen dass deine Messages so wie du willst als ganzes geschickt werden.

Das ganze basiert auf einem Stream. Da kann es passieren dass mal ein Zeichen geschickt wird, dann noch 3 und dann der Rest. Oder auch alles auf einmal wenn gerade sonst "nix los ist".

Das heißt, du brauchst auf beiden Seiten einen Algorithmus, der den Stream einliest und irgendwo zusammensetzt bis das Stopzeichen kommt. Dann erst muss der string zwischen Start- und Stopzeichen extrahiert und verarbeitet werden.

Ich hab deinen Code nur überflogen - ob es jetzt tatsächlich daran liegt weiß ich nicht. Aber deine Fehlerbeschreibung wäre symptomatisch.

Keine passende Antwort gefunden?

Fragen Sie die Community