从网络流中读取的问题

时间:2018-02-21 16:45:36

标签: c#

目前我正在开发一个应该通过网络工作的小项目。但是我有一个read方法的问题,它应该从网络流中读取字节。该函数读取每个单个字节,当涉及到特定字节时(在我的情况下它是!= 33),它会触发数据接收事件。但是,当服务器在短时间内发送多条消息时,read方法会丢失一些消息。这是我的代码:

public void Read()
{
    while (this.isReading == true)
    {
        try
        {
            if (!this.stream.DataAvailable)
            {
                Thread.Sleep(10);
                continue;
            }

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

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

                // Checks if the current byte is the last byte of a protocol
                if (buffer[0] == 33)
                {
                    break;
                }

                receivedBytes.Add(buffer[0]);
            }

            this.FireOnDataReceived(receivedBytes.ToArray());
        }
        catch
        {
            this.FireOnConnectionLost();
        }
    }
}

0 个答案:

没有答案