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();
答案 0 :(得分:2)
你的字节缓冲区是10025.那是最后的,它永远不会改变。收到的字节数是Read
方法的返回值,您完全忽略该方法。因此,从GetString
获得的字符串包含所有10025个字符,并且只有在打印出来时才会忽略零。
无论如何,这不是合适的TCP。它无论如何都行不通,不可靠。尽量避免编写TCP代码,除非你真的知道自己在做什么 - 看看WCF,HTTP或者Lindgren - 它可能比做自己的TCP代码好多了。