0
NetworkStream.Length
이 구현되지 않았으므로 네트워크 스트림에서 얼마나 많은 데이터가 이미 사용 가능한지 알 수있었습니다..Net NetworkStream .Length가 구현되지 않았습니다. 얼마나 많은 데이터가 스트림에서 사용 가능한지 알 수 있습니다.
참고 DataAvailable=True
DataAvailable
이 설정되어있는 동안 함수를 계속 실행하는 스레드를 사용하는 경우이 함수는 해당 배치를 잘라야합니다.
여기 내 목표를 달성하기 위해 노력한 것만 보여줍니다.
내 모든 패킷은 밝혀 고정 [2 Bytes Size][1 Byte Type][Optional Payload]
Public Function readPacket() As PacketReader
'This cuts the stream of bytes into readable packets.
Try
If serverStream.DataAvailable Then
If packetSize = 0 Then
packetSize = serverReader.ReadUInt16()
packetType = serverReader.ReadByte()
End If
If packetSize = 0 Then
Return New PacketReader(packetType, New MemoryStream())
End If
If serverStream.Length >= packetSize Then
Dim packet() As Byte = serverReader.ReadBytes(packetSize)
Dim stream As Stream = New MemoryStream(packet)
Dim tmpPacketSize As UShort = packetSize
packetSize = 0
Return New PacketReader(packetType, tmpPacketSize, stream)
End If
End If
Catch e As Exception
formLobby.logMsg("Exception: " + e.ToString)
End Try
Return Nothing
End Function