我正在尝试实现一个可以侦听传入 TCP 数据的类。我正在尝试使用任务来做到这一点。
我有两个中心方法
private async void ReceiveAsync()
{
while (true)
{
int bytesRead = await Receive();
if (bytesRead > 0)
{
byte[] result = new byte[bytesRead];
Buffer.BlockCopy(_buffer, 0, result, 0, bytesRead);
Console.WriteLine(Encoding.UTF8.GetString(result));
}
}
}
和
private Task<int> Receive()
{
return Task.Run(() =>
{
if (sock.Poll(-1, SelectMode.SelectRead))
if (sock.Available > 0)
return sock.Receive(_buffer, _buffer.Length, SocketFlags.None);
return -1;
}
);
}
在我的主程序中,我调用ReceiveAsync()
TCP 管道,然后将一些数据发送到接收器响应的 TCP 管道中。我确实收到了这个回复,但现在我陷入了一个无限循环中while(true)
,并且没有收到从“接收器”发送的进一步数据。
有什么完全错误的。它是什么?