gpt4 book ai didi

c# - EndianBinaryReader - 输入流的连续更新?

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:06 25 4
gpt4 key购买 nike

我正在尝试使用 Jon Skeet 在他的 misc utils lib 中编写的 EndianBinaryReaderEndianBinaryWriter .它非常适合我对它的两种用途。

第一次从网络流 (TCPClient) 读取数据,我坐在一个循环中读取传入的数据。我可以创建一个 EndianBinaryReader 然后就可以了在应用程序关闭时处理它。我通过传入 TCPClient.GetStream 来构造 EndianBinaryReader

我现在正尝试在从 UdpClient 读取数据时做同样的事情,但这没有流,因为它连接较少。所以我得到这样的数据

byte[] data = udpClientSnapShot.Receive(ref endpoint);

我可以将这些数据放入内存流

var memoryStream = new MemoryStream(data);

然后创建EndianBinaryReader

var endianbinaryReader = new EndianBinaryReader(
new BigEndianBitConverter(), memoryStream,Encoding.ASCII);

但这意味着我每次读取时都必须创建一个新的字节序读取器。有没有一种方法可以让我只创建一个流,我可以用来自 udp 客户端的数据不断更新输入流?

最佳答案

我不记得 EndianBinaryReader 是否有缓冲区 - 你可以覆盖单个 MemoryStream 吗?但老实说,这里额外对象的开销很小。数据包有多大? (将其放入 MemoryStream 将克隆 byte[])。

我很想使用最简单的东西,看看是否存在真正的问题。可能我做的一个改变是引入using(因为它们是IDisposable):

using(var memoryStream = new MemoryStream(data))
using(var endianbinaryReader = ..blah..) {
// use it
}

关于c# - EndianBinaryReader - 输入流的连续更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2118619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com