如何使UdpClient不阻塞

时间:2018-10-02 14:50:28

标签: c# multithreading sockets udp udpclient

我是Socket编程和C#的新手。我正在尝试创建一个正在使用UdpClient的应用程序。

但是即使套接字上有数据,但有时Receive function仍未接收到任何数据并进入阻塞状态。 为了防止这种情况阻塞,我使用了一个计数器。 接收功能在线程上。

main function中,我创建了一个计数器

int count = 0;
bool ret = IsDataReceived();
while(!ret && count < 30)
{
  ret = IsDataReceived();
  count++;
}

if(count>= 30)
{
thread.abort();

udpclient.close();
}
else
{
Console.WriteLine("Data Received");
}

我很想这样做,但是我想知道如何使UdpClient成为非阻塞。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果使用的话,我不知道函数IsDataReceive是怎么写的:

UdpClient.Receive

此操作将阻塞,直到套接字上返回一条消息为止

如果您不想执行阻止操作,可以使用:

UdpClient.ReceiveAsync