c#socket接收字节数组长度

Pau*_*u C 5 c# bytearray

我正在尝试学习在c#中使用套接字,我有一个疑问,我正在使用这样的代码:

byte[] data = new byte[64]; 
int length = 0;
length = sock.Receive(data);
//more code...
Run Code Online (Sandbox Code Playgroud)

因此,byte[]数据填充了被回收的数据,并且数组中的左侧空格填充为0,是否byte[]完全分配到内存中(全部为64字节)?如果是这样,有没有办法使byte[]大小与实际发送的数据相同?

usr*_*usr 2

您只需使用返回值Receive即可了解已到达的数据量。如果需要,您可以使用缩短缓冲区Array.Resize,但这通常表明出现了问题。

另请注意,TCP 是字节流,不保留消息边界。