目前我正在开发一个应该通过网络工作的小项目。但是我有一个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();
}
}
}