C#将消息写入网络流的速度过快

时间:2018-04-08 08:11:14

标签: c#

我遇到了从网络流读取和写入网络流的问题。

我认为服务器发送消息的速度非常快,它可以将两个协议一起发送(或更多),而不是自己发送。这不应该是任何问题,因为我有一个标题和每个协议的结束。标头为"CHAT",结尾为"DEL"(控制字符为127)。

当我的网络观察者读取DEL字符时,它会触发收到新数据的事件。在它触发数据接收事件之前,它检查是否收到了至少六个字节(因为我的标题是" CHAT" + Type" IA"(例如:还活着))。

然后它检查消息是否来自类型"是否活着"不应该发起一个事件,因为它的目的只是检查对方是否还在这里(这就是为什么我使用继续)。例如,当两个协议一起发送时,它会一直读取,直到第一个协议结束,触发事件然后再次开始读取,直到下一个协议结束。

这就是我实施的逻辑,但似乎我犯了一个错误。这里是我读取方法的代码:

private void Read()
{
    while (this.isReading == true)
    {
        /*if (this.stream.DataAvailable == false)
        {
            Thread.Sleep(10);
            continue;
        }*/

        List<byte> receivedBytes = new List<byte>();
        byte[] buffer = new byte[1];

        while (this.stream.DataAvailable == true)
        {
            this.stream.Read(buffer, 0, 1);

            if (buffer[0] == 127)
            {
                break;
            }

            receivedBytes.Add(buffer[0]);
        }

        if (receivedBytes.Count >= 6)
        {
            if (receivedBytes[0] == 67 && receivedBytes[1] == 72 && receivedBytes[2] == 65 && receivedBytes[3] == 84)
            {
                if (receivedBytes[4] == 73 && receivedBytes[5] == 65)
                {
                    continue;
                }

                this.FireOnDataReceived(receivedBytes.ToArray());

            }
        }
    }
}

0 个答案:

没有答案