Hallo,
ich beschäftige mich momentan mit der Programmierung mit TCP-Servern, was bis jetzt auch ganz gut funktioniert hat.
Nun gibt es aber ein Problem:
Manchmal kommen zu wenig Bytes beim Server an. Das ist jedoch nur alle 2-5 Male so, also vorwiegend kommt alles komplett an. Als Beispiel: Gesendet werden 550899 Bytes, aber es kommen nur 387377 Bytes an.
Für den Fall, dass das irgendwie wichtig sein sollte, das Bytearray ist ein Bild.
Hier ist mein Code für das Senden des Bytearrays (Client): (ich denke kaum, dass das daran liegen wird)
und hier der Code für das Empfangen:
Ich habe natürlich auch schon ein bisschen im Internet gesucht, aber nichts gefunden, was sich mit dem Problem befasst (wahrscheinlich eher falsch gesucht, denn ich kann mir kaum vorstellen, dass ich der einzige mit so einem Problem bin)
ich beschäftige mich momentan mit der Programmierung mit TCP-Servern, was bis jetzt auch ganz gut funktioniert hat.
Nun gibt es aber ein Problem:
Manchmal kommen zu wenig Bytes beim Server an. Das ist jedoch nur alle 2-5 Male so, also vorwiegend kommt alles komplett an. Als Beispiel: Gesendet werden 550899 Bytes, aber es kommen nur 387377 Bytes an.
Für den Fall, dass das irgendwie wichtig sein sollte, das Bytearray ist ein Bild.
Hier ist mein Code für das Senden des Bytearrays (Client): (ich denke kaum, dass das daran liegen wird)
und hier der Code für das Empfangen:
VB.NET-Quellcode
- While True
- Try
- If TcpClient.IsConnected() Then
- Dim token As Byte() = New Byte(2) {}
- Stream.Read(token, 0, 2) 'Auf neue Daten warten.
- Dim tokenstr = Text.ASCIIEncoding.ASCII.GetString(token).ToUpper()
- Dim bytes As New List(Of Byte)
- While TcpClient.Available > 0
- Dim response As Byte() = New Byte(TcpClient.Available - 1) {}
- Stream.Read(response, 0, response.Length)
- bytes.AddRange(response)
- End While
- Debug.Print("Empfangen: {0}", bytes.Count)
- Continue While
- End If
- Catch ex As IOException
- Catch ex As ObjectDisposedException
- End Try
- RaiseEvent Disconnected(Me, EventArgs.Empty)
- Exit While
- End While
Ich habe natürlich auch schon ein bisschen im Internet gesucht, aber nichts gefunden, was sich mit dem Problem befasst (wahrscheinlich eher falsch gesucht, denn ich kann mir kaum vorstellen, dass ich der einzige mit so einem Problem bin)