NetworkStream.GetStream()返回意外结果

时间:2015-02-20 16:17:13

标签: c# networkstream

NetworkStream serverStream = clientSocket.GetStream();
byte[] inStream = new byte[10025];
 serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
 string[] delim = {"!###!"};
 string[] returndata = System.Text.Encoding.ASCII.GetString(inStream).Split(delim, StringSplitOptions.RemoveEmptyEntries);

returndata [0]应该是一串2个字符" fs"。 使用switch()或if()它永远不会匹配" fs"。 " FS"应该是2长度,当我尝试returndata [0] .length它说10025 ... 但是当我在Debug.WriteLine()中显示" fs"只要.. 请帮忙。

编辑: 收到的数据如下:

byte[] outStream = System.Text.Encoding.ASCII.GetBytes("fs!###!somethingsblabalkla");
serverStream.Write(outStream, 0, outStream.Length);
serverStream.Flush();

1 个答案:

答案 0 :(得分:2)

你的字节缓冲区是10025.那是最后的,它永远不会改变。收到的字节数是Read方法的返回值,您完全忽略该方法。因此,从GetString获得的字符串包含所有10025个字符,并且只有在打印出来时才会忽略零。

无论如何,这不是合适的TCP。它无论如何都行不通,不可靠。尽量避免编写TCP代码,除非你真的知道自己在做什么 - 看看WCF,HTTP或者Lindgren - 它可能比做自己的TCP代码好多了。