目前我尝试实现基于tcp的通信。 通过这种方式,我在从网络流中读取时遇到了一些异常。 例如,阻止读取功能直到接收到数据。 有没有更好的方法从网络流中读取数据?
目前,我的“协议”的工作原理如下:
所以这是我在tcp通信中的简单实现,有更好的方法吗?
以下是一些代码:
private void HandleThread()
{
using (var stream = _client.GetStream())
{
while (_client.Available > 0)
{
var buffer = new byte[4];
stream.Read(buffer, 0, buffer.Length);
var length = BitConverter.ToInt32(buffer, 0);
buffer = new byte[length];
stream.Read(buffer, 0, buffer.Length);
var type = (PacketType)buffer[0];
var parser = PacketFactory.Get(type);
parser.Parse(buffer);
}
}
}