我正在为一个通常以500字节或更少的字符串形式发送数据的服务器编写客户端。但是,数据偶尔会超过这个限制,一组数据可能包含200,000字节,而客户端无从得知(在初始化或重大事件时)。然而,我不想让每个客户端都运行一个50 MB的套接字缓冲区(如果可能的话)。
每组数据由空字符\0分隔。我应该使用什么样的结构来存储部分发送的数据集?
例如,服务器可能会发送ABCDEFGHIJKLMNOPQRSTUV\0WXYZ\0123!\0。我希望独立处理ABCDEFGHIJKLMNOPQRSTUV,WXYZ和123!。此外,服务器可以发送ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890LOL123HAHATHISISREALLYLONG而没有终止字符。我希望将该数据集存储在某个地方以供稍后附加和处理。
另外,我正在使用异步套接字方法(BeginSend、EndSend、BeginReceive、EndReceive)。如果有影响的话,请告诉我。
目前,我正在考虑使用List和StringBuilder。任何比较这两种情况的建议都将非常有帮助。
每组数据由空字符\0分隔。我应该使用什么样的结构来存储部分发送的数据集?
例如,服务器可能会发送ABCDEFGHIJKLMNOPQRSTUV\0WXYZ\0123!\0。我希望独立处理ABCDEFGHIJKLMNOPQRSTUV,WXYZ和123!。此外,服务器可以发送ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890LOL123HAHATHISISREALLYLONG而没有终止字符。我希望将该数据集存储在某个地方以供稍后附加和处理。
另外,我正在使用异步套接字方法(BeginSend、EndSend、BeginReceive、EndReceive)。如果有影响的话,请告诉我。
目前,我正在考虑使用List和StringBuilder。任何比较这两种情况的建议都将非常有帮助。
MemoryStream
而不是List<byte>
?并且使用stream.Seek(0, SeekOrigin.Begin)
代替RemoveRange
。 - Matthew Flaschen