H
Housechen
Gast
Ich hoffe mal, dass VS mir hier ´nen Scherz aufbinden will...
Ich werde mich wahrscheinlich eh gleich ärgern über die
einfache Antwort, aber hier erstmal das Problem:
Ich lese den Stream meines TCP-Clienten (Receive läuft in einem eigenen Thread). Um durch zu kleinen Buffer gesplittete Nachrichten oder zusammen versendete Pakete zu entflechten bzw. ordentlich zu ordnen, wende ich obigen Algorithmus an. Beim Invoke wird die fertiggepaarste Nachricht weitergegeben. Die MsgBox liefert mir immer die korrekte Nachricht. Tausche ich das "+=" beim Substring durch ein "=", funktioniert es, ebenso wenn ich unter dem ersten Loop die Zeile weglasse. Also NachrichtenBuffer bleibt trotz nicht leerem Substring leer. Beim allerersten Aufruf bzw. Nachrichtenempfang funktioniert auch alles korrekt. oO
Ich hab´ mir jetzt fast 2 Stunden lang die Nerven daran gequält, ich hoffe ihr könnt endlich diesen Mythos aufdecken. Normalerweise bin ich ja auch pro Selbstständigkeit und bin zu stur mir helfen zu lassen, aber das hier geht echt nicht gerade. -.-
Vielen vielen Dank im Voraus und bei Fragen fragt natürlich!
Mfg
Cyba_Mephisto
Code:
Private Sub Receive()
Do
Dim ByteBuffer(Client.ReceiveBufferSize()) As Byte
Client.GetStream.Read(ByteBuffer, 0, Client.ReceiveBufferSize())
StringBuffer = Encoding.ASCII.GetString(ByteBuffer)
Do While StringBuffer.Contains("EnDMessaGe")
NachrichtenBuffer += StringBuffer.Substring(0, StringBuffer.IndexOf("EnDMessaGe"))
MsgBox(StringBuffer.Substring(0, StringBuffer.IndexOf("EnDMessaGe")))
StringBuffer = StringBuffer.Remove(0, StringBuffer.IndexOf("EnDMessaGe") + 10)
Formverweis.Invoke(Received, New String(NachrichtenBuffer))
NachrichtenBuffer = ""
Loop
NachrichtenBuffer += StringBuffer
Loop
End Sub
Ich werde mich wahrscheinlich eh gleich ärgern über die
einfache Antwort, aber hier erstmal das Problem:
Ich lese den Stream meines TCP-Clienten (Receive läuft in einem eigenen Thread). Um durch zu kleinen Buffer gesplittete Nachrichten oder zusammen versendete Pakete zu entflechten bzw. ordentlich zu ordnen, wende ich obigen Algorithmus an. Beim Invoke wird die fertiggepaarste Nachricht weitergegeben. Die MsgBox liefert mir immer die korrekte Nachricht. Tausche ich das "+=" beim Substring durch ein "=", funktioniert es, ebenso wenn ich unter dem ersten Loop die Zeile weglasse. Also NachrichtenBuffer bleibt trotz nicht leerem Substring leer. Beim allerersten Aufruf bzw. Nachrichtenempfang funktioniert auch alles korrekt. oO
Ich hab´ mir jetzt fast 2 Stunden lang die Nerven daran gequält, ich hoffe ihr könnt endlich diesen Mythos aufdecken. Normalerweise bin ich ja auch pro Selbstständigkeit und bin zu stur mir helfen zu lassen, aber das hier geht echt nicht gerade. -.-
Vielen vielen Dank im Voraus und bei Fragen fragt natürlich!
Mfg
Cyba_Mephisto
Zuletzt bearbeitet:
(Komische Zeilenquetschungen entfernt. oO)