【发布时间】:2014-06-02 12:06:07
【问题描述】:
我在 C# 中使用异步套接字 API。在客户端,我需要一个缓冲区来存储从服务器读取的二进制数据。其他客户端逻辑会检查缓冲区,解包头部查看长度,如果长度小于头部指示的长度,则继续。下次我们再次检查缓冲区。对于网络逻辑,我需要维护这个缓冲区,我想知道我应该使用什么数据类型。
在 python 中,我们使用字符串作为缓冲区,但我认为这在 C# 中行不通。效率低,编码问题(我需要自己解析二进制数据,不一定是字符串),经常改。字符串生成器呢?还有其他建议吗?
【问题讨论】:
-
使用
byte[],它恰好是套接字 I/O 的自然数据类型。 -
@EugenRieck 为什么要在评论中给出答案?
-
@EugenRieck 这需要管理缓冲区,例如 startIndex 和 Length。并且数组的长度是固定的,那么通信流量脉冲呢?
-
有一个类叫做 BinaryReader 和 BinaryWriter 专门用来处理原始数据类型
-
@AndrewShepherd,因为它是 hort 且非原创的