C#:如何处理TCP套接字缓冲区数据?作为字节还是转换为ascii字符串?

C#:如何处理TCP套接字缓冲区数据?作为字节还是转换为ascii字符串?,c#,.net,sockets,C#,.net,Sockets,C#:如何处理TCP套接字缓冲区数据?作为字节还是转换为ascii字符串 我使用的方法涉及从返回的tcp套接字缓冲区解析特定数据,哪种做法最好 我应该以原始字节的形式处理/解析数据吗?或者我应该在将其转换为ascii字符串后对其进行处理,因为字符串数据类型具有niftier文本操作?通常作为字节。它基本上是二进制数据——由TCP之上的协议来正确解释二进制数据 现在,你的数据是什么?你能控制协议吗?如果是,它是文本数据吗?将图像的二进制数据(例如)转换为ASCII可能是灾难性的。。。但是如果它是一

C#:如何处理TCP套接字缓冲区数据?作为字节还是转换为ascii字符串

我使用的方法涉及从返回的tcp套接字缓冲区解析特定数据,哪种做法最好


我应该以原始字节的形式处理/解析数据吗?或者我应该在将其转换为ascii字符串后对其进行处理,因为字符串数据类型具有niftier文本操作?

通常作为字节。它基本上是二进制数据——由TCP之上的协议来正确解释二进制数据

现在,你的数据是什么?你能控制协议吗?如果是,它是文本数据吗?将图像的二进制数据(例如)转换为ASCII可能是灾难性的。。。但是如果它是一个真正的ASCII协议,那么它可能是正确的选择

如果您不了解协议,请不要执行任何转换:除非您非常小心(例如,使用base64而不仅仅是ASCII编码),否则它们可能会丢失信息


如果您确实知道协议,那么应该说明如何处理数据。

通常以字节为单位。它基本上是二进制数据——由TCP之上的协议来正确解释二进制数据

现在,你的数据是什么?你能控制协议吗?如果是,它是文本数据吗?将图像的二进制数据(例如)转换为ASCII可能是灾难性的。。。但是如果它是一个真正的ASCII协议,那么它可能是正确的选择

如果您不了解协议,请不要执行任何转换:除非您非常小心(例如,使用base64而不仅仅是ASCII编码),否则它们可能会丢失信息


如果您确实知道协议,那么应该说明如何处理数据。

实际上,buufer数据总是“原始”字节,因此如果您想解析内容,必须将字节[]转换为字符串。例如:

string myString = Encoding.ASCII.GetString(myBufferData);

实际上,buufer数据总是“原始”字节,因此如果要解析内容,必须将字节[]转换为字符串。例如:

string myString = Encoding.ASCII.GetString(myBufferData);

我认为这取决于缓冲区中包含的数据。如果是字符串,则可以方便地将缓冲区转换为字符串


还要注意的是,在发送字符串之前,应该预先添加一些头数据。就像数据有效负载的长度、校验和/奇偶校验等。网络是一个不确定的环境,您无法确定谁在指定端口上发送了什么,如果您直接将接收到的缓冲区转换为字符串,您可能会遇到难以跟踪的崩溃。

我认为这取决于缓冲区中包含的数据。如果是字符串,则可以方便地将缓冲区转换为字符串

还要注意的是,在发送字符串之前,应该预先添加一些头数据。就像数据有效负载的长度、校验和/奇偶校验等一样,网络是一个不确定的环境,您无法确定谁在指定端口上发送了什么,如果您只是将接收到的缓冲区直接转换为字符串,您可能会遇到难以跟踪的崩溃