如何检测通过套接字

时间:2015-09-07 18:03:07

标签: c# sockets

我们假设_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();

2 个答案:

答案 0 :(得分:2)

对于二进制消息,没有办法做到这一点。您需要知道事先传输的字节数,或者需要添加已定义的消息结束指示符。

答案 1 :(得分:-1)

只需调用_streamWriter.End() - 它将结束当前网络流并发送给客户端。就是这样。

请注意 - 它不会传递您的代码示例,因为您的流不是网络流。

您可以使用_stream.BinaryWrite(byteArray)来编写字节数组。对于网络流。