如何检测通过套接字发送的字节[]结束消息
本文关键字:字节 消息 结束 套接字 何检测 检测 | 更新日期: 2023-09-27 18:11:31
假设_sslStream
是客户端已建立的SslStream
连接。
private void DoStuff(string message)
{
_streamWriter = new StreamWriter(_sslStream) { AutoFlush = true };
_streamWriter.Write(GetGzipBytes("hello world"));
}
private static byte[] GetGzipBytes(string message)
{
//Not a final implementation. Cannot add string "<EOF>" mark
return Encoding.UTF8.GetBytes(message);
}
如何在服务器端检测接收到的字节是否完整?
是否有一些推荐的"字节数组的结束"标记,我应该添加到数组的结束?
我如何确保GetGzipBytes()
方法不会产生将在消息内具有这些字节的byte[]
?
对于字符串,我会调用:
_streamReader.ReadLine();
对于二进制消息,没有办法这样做。您需要知道预先传输的字节数,或者需要添加一个定义的消息结束指示器。
调用_streamWriter.End() -它将结束当前网络流并发送到客户端。就是这样。
请注意-它不会在你的代码示例中传递,因为你的流不是网络流。
你可以使用_stream.BinaryWrite(byteArray)来写字节数组。