我正在通过套接字发送消息。 在客户端,我正在使用StringBuilder
组装消息StringBuilder sb = new StringBuilder(message);
sb.Insert(0, (char)11);
sb.Append((char)28);
sb.Append((char)13);
从客户端发送到服务器
Byte[] data = new Byte[1024];
data = Encoding.ASCII.GetBytes(message.ToString());
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
服务器端
StringBuilder message = new StringBuilder(Encoding.ASCII.GetString(bytesReceived, 0, bytesReceived.Length));
然后我想查看我的消息是否包含在正确的容器中,但由于某种原因,最后2个字符在检查中等于0而不是正确的28和13。
if (((int)messsage[message.Length - 2] == 28) && ((int)message[message.Length - 1] == 13))
提前感谢您提供任何帮助
添加了要求
的数据byte[] bytes = new byte[1024];
NetworkStream stream = tcpClient.GetStream();
stream.Read(bytes, 0, bytes.Length);
答案 0 :(得分:2)
Stream.Read
将读取最多bytes.Length
个字节,它的返回值将告诉您实际读取的字节数。
如果这还不够,那么您需要再次致电Stream.Read()
。
此外,bytes.Length
将始终返回数组的长度,而不是读取的字节数。
查看您的发送代码,您可能希望尽可能多地从流中读取,将读取的内容附加到字符串构建器,然后检查后两个字符是否为28和13,如果它们是那么你有完整的信息。