Socketverbindung

jma

Mitglied
Moin
arbeite mit Visual C#

ich baue ne Socketverbindung zu nem telnetserver auf, sende alle 4sek mittels des timers einen befehl rüber, der mir als antwort ne reihe Messdaten liefert. Die Messdaten sind länger wie mein Empfangsbuffer. Vergrößern des Buffers bringt nichts, Telnet oder TCP haben wohl ne Übertragungsbegrenzung. Da der Anfang der messwerte mit nem *s/start und das ende mit *s/end gekennzeichnet sind, dachte ich durchsuche ich den ankommenden string, und füge die Teile dann zusammen. Ist der string komplett wird er weitergegeben um die daten in ne Tabelle einzusortieren.

Leider tuts mein Quellcode nicht so, vielleicht kann ja mal jemand nen blick drauf werfen (entsprechende Fkt. siehe anhang), und sieht den Fehler. Das Problem ist das er einmal die Werte bekommt danach aber keine Daten mehr empfängt. Nehme ich die Suche nach *s/start oder *s/end raus und schreibe alle daten in ein Textfeld. Läuft die anwendung bis zum ende durch.
 

Anhänge

  • Dokument.txt
    1,6 KB · Aufrufe: 91
Fehler:
System.ArgumentOutOfRangeException: Index und Länge müssen sich auf eine Position in der Zeichenfolge beziehen.
Parametername: length
at System.String.Substring(Int32 startIndex, Int32 length)
at QoS.frmTelnet.extract2(String txt, String input2) in c:\dokumente und einstellungen\jmatthes\desktop\qos\frmtelnet.cs:line 979
at QoS.frmTelnet.listenclient() in c:\dokumente und einstellungen\jmatthes\desktop\qos\frmtelnet.cs:line 942

Das ist der Fehler der in listenclient im catch fall ausgegeben wird. logisch das er dann keine daten mehr empfängt, trotzdem verstehe ich die Meldung nicht, übergebe doch den string sauber, ziehe nen substring raus und vergleiche den dann.

die beiden zeile verweisen auf die fkt extract2 im ersten anhang

jma
 
danke
ich habs gefunden.

die schleife sollte nur bis input2.length - txt.length laufen, damit der substring nicht über das ende hinaus zugreift. Blöder Fehler

jma
 
Hallo jma!

Du kannst die Code-Snippets ruhig mit einem Code-Tag versehen und hier rein posten. :)
Wenn Du "schnell" Hilfe brauchst dann mach Dir doch bitte die Mühe mal die Shifttaste zu benutzen.
Schau Dir mal die Netiquette (Abs 12) an. ;)

MfG, cosmo
 
Zurück