.Net NetworkStream.Length未实现如何知道流上有多少数据可用

.Net NetworkStream.Length未实现如何知道流上有多少数据可用,stream,packet,networkstream,packets,Stream,Packet,Networkstream,Packets,由于从未实现过NetworkStream.Length,我如何才能看到NetworkStream上已有多少数据可用 注意,我不能简单地Read()而DataAvailable=True我使用一个线程,在设置DataAvailable时它会一直运行一个函数,那么这个函数应该切断该批处理 这是我的坏函数,只是为了说明我正在努力实现什么 我的所有数据包都是用[2字节大小][1字节类型][可选负载]发送的。 Public Function readPacket() As PacketReader

由于从未实现过
NetworkStream.Length
,我如何才能看到NetworkStream上已有多少数据可用

注意,我不能简单地
Read()
DataAvailable=True
我使用一个线程,在设置
DataAvailable
时它会一直运行一个函数,那么这个函数应该切断该批处理

这是我的坏函数,只是为了说明我正在努力实现什么

我的所有数据包都是用
[2字节大小][1字节类型][可选负载]发送的。

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
修正了结果。 您不能使用
NetworkStream.Length
函数。 您需要改用
TcpClient.Length

其中包含
NetworkStream

阿卡

TcpClient.GetStream()
返回
NetworkStream