0

実装されていないためNetworkStream.Length、ネットワークストリームで既に利用可能なデータの量を他にどのように確認できますか.

が設定されている間、関数を実行し続けるスレッドを使用しているRead()間は単純にできないことに注意してください。この関数はそのバッチを切断する必要があります。DataAvailable=TrueDataAvailable

これは、私が達成しようとしていることを示すためだけに、壊れた関数です。

すべてのパケットが送信されます[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
4

1 に答える 1