Hallo,
ich schreibe zurzeit einen Gameserver, jener so verlangt es das Spiel, muss daten in form eines IRC-Chats senden, (IRC-Befehle)
das problem was ich habe, dass ich daten empfange, jedoch bei langen "Zeilen", die das Spiel sendet, diese zerhackt ankommen <.<
hier mal ein Beispiel:
die zeile muss lauten:
die rotmakierte zeile, wird "zerhackt" gesendet (welche aber eine ganze zeile sein muss!, das spiel sendet sie auch als ganze!)... aber ich finde den fehler nicht
ich erhalte aber:
und
hier ist die funktion:
ich schreibe zurzeit einen Gameserver, jener so verlangt es das Spiel, muss daten in form eines IRC-Chats senden, (IRC-Befehle)
das problem was ich habe, dass ich daten empfange, jedoch bei langen "Zeilen", die das Spiel sendet, diese zerhackt ankommen <.<
hier mal ein Beispiel:
die zeile muss lauten:
die rotmakierte zeile, wird "zerhackt" gesendet (welche aber eine ganze zeile sein muss!, das spiel sendet sie auch als ganze!)... aber ich finde den fehler nicht
ich erhalte aber:
und
hier ist die funktion:
VB.NET-Quellcode
- Private Sub _reading(ByVal ar As IAsyncResult)
- Dim asyncState = DirectCast(ar.AsyncState, ReadAsyncState)
- Dim buffer = asyncState.Buffer
- Dim gc = asyncState.gc
- If gc.client IsNot Nothing And gc.client.Connected And gc.stream IsNot Nothing And gc.stream.CanRead Then
- Dim bytecount As Integer = gc.stream.EndRead(ar)
- If bytecount > 0 Then
- buffer(_endpoint.Server.ReceiveBufferSize - 1) = Convert.ToByte(0)
- Dim _rline As String = Encoding.ASCII.GetString(buffer, 0, buffer.Length)
- While gc.stream.DataAvailable And gc.stream.CanRead
- bytecount = gc.stream.Read(buffer, 0, gc.client.ReceiveBufferSize)
- _rline = Encoding.ASCII.GetString(buffer, 0, buffer.Length)
- End While
- If _rline.Length > 0 Then
- Dim Msg As String = _rline.ToString
- Dim message() As String = Msg.Split(" ")
- MsgBox(Msg)
- If Msg.StartsWith("verchk") Then handle_verchk_command(gc, Message)
- If Msg.StartsWith("lobcount") Then handle_lobcount_command(gc, Message)
- If Msg.StartsWith("whereto") Then handle_whereto_command(gc, Message)
- If Msg.StartsWith("quit") Then handle_quit_command(gc, Message)
- End If
- buffer(_endpoint.Server.ReceiveBufferSize - 1) = Convert.ToByte(0)
- If gc.stream.CanRead Then
- gc.stream.BeginRead(buffer, 0, _endpoint.Server.ReceiveBufferSize, AddressOf _reading, New ReadAsyncState With {.Buffer = buffer, .gc = gc})
- End If
- Else
- Gameclients.Remove(gc)
- Exit Sub
- End If
- End If
- End Sub