首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将NetworkStream读入阵列

将NetworkStream读入阵列
EN

Stack Overflow用户
提问于 2021-07-08 05:27:03
回答 1查看 8关注 0票数 0

我一直在尝试将网络流读入数组。下面的代码运行良好,但速度非常慢:

代码语言:javascript
复制
Private Function ReadBytes(ByVal NetworkStream As System.Net.Sockets.NetworkStream) As Byte()
Dim Bytes As Byte() = {}
Dim Index As Integer = 0

While NetworkStream.DataAvailable = True
    Array.Resize(Bytes, Index + 1)
    Bytes(Index) = NetworkStream.ReadByte()
    Index += 1
End While

Return Bytes

End函数

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-07-08 05:27:03

代码的问题是,每次调整数组的大小时,数组实际上也会被复制。这段代码应该可以解决你的问题:

代码语言:javascript
复制
Private Function ReadBytes(ByVal NetworkStream As System.Net.Sockets.NetworkStream) As Byte()
    Dim BlockSize As Integer = 65536
    Dim Bytes(BlockSize) As Byte
    Dim Position As Integer = 0
    Dim DataRead As Integer = 0

    Do
        ReDim Preserve Bytes(Position + BlockSize)

        DataRead = NetworkStream.Read(Bytes, Position, BlockSize)
        Position += BlockSize

        If DataRead = 0 Then
            For i = Bytes.Length - 1 To 0 Step -1
                If Not Bytes(i) = 0 Then
                    ReDim Preserve Bytes(i)
                    Exit Do
                End If
            Next
            Exit Do
        End If
    Loop

    Return Bytes
End Function
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68293151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档