【发布时间】:2016-05-26 00:45:50
【问题描述】:
我还有其他几段使用相同代码运行的网络代码,我以前从未见过这种情况。接收缓冲区中的剩余字节被\0\0\0\0\0\0\0\0\0\0\填满
这个问题我见过几次,但一直没有答案。
TcpListener tlist = new TcpListener(IPAddress.Parse(ip.ToString()), 27275);
一旦建立连接。 . .
byte[] byData = new byte[textBox.Text.Length];
byData = System.Text.Encoding.UTF8.GetBytes(textBox.Text);
client.Send(byData, 0, byData.Length, 0);
以及接收端:
byte[] bufferRec = new byte[56];
tc.Client.Receive(bufferRec, 0, 56, 0);
string output = Encoding.UTF8.GetString(bufferRec);
我通常使用的缓冲区大小是 256,实际上我很少发送/接收 256 字节的数据,但我从来没有看到那些剩余的字节被垃圾数据填满,只有在这种情况下。
编辑:我当然可以简单地解析出垃圾数据,但它仍然是奇怪的行为,因为它没有理由。
【问题讨论】:
-
请注意
\0是一个字符,而不是一个字节。我怀疑字节只是零。