着信TCPデータをリッスンできるクラスを実装しようとしています。私はタスクを使用してそうしようとしています。
私には2つの中心的な方法があります
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パイプラインを呼び出してデータを送信し、受信者が応答します。この応答はありますが、現在、内で無限ループに陥っておりwhile(true)
、「レシーバー」から送信されたそれ以上のデータは受信されていません。
完全に間違っていることがあります。それは何ですか?