如何检测通过套接字发送的字节[]结束消息

本文关键字:字节 消息 结束 套接字 何检测 检测 | 更新日期: 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)来写字节数组。