【发布时间】:2015-02-05 19:56:01
【问题描述】:
我正在使用 SSLStream 类实现一个协议。我开始阅读这样的消息(在消息中接收 ASCII 字符):
byte [] buffer = new byte[2048];
StringBuilder messageData = new StringBuilder();
int bytes = -1;
do
{
// Read the client's test message.
bytes = sslStream.Read(buffer, 0, buffer.Length);
// Use Decoder class to convert from bytes to UTF8
// in case a character spans two buffers.
Decoder decoder = Encoding.UTF8.GetDecoder();
char[] chars = new char[decoder.GetCharCount(buffer,0,bytes)];
decoder.GetChars(buffer, 0, bytes, chars,0);
messageData.Append (chars);
// Check for EOF or an empty message.
if (messageData.ToString().IndexOf("<EOF>") != -1)
{
break;
}
} while (bytes !=0);
但是,现在协议发生了变化,我不需要搜索消息结尾,但我需要先读取消息长度(以字符数为单位),然后读取具有接收长度的消息。我该怎么做?
【问题讨论】:
标签: c# .net network-programming