我是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
成为非阻塞。
谢谢。
答案 0 :(得分:0)
如果使用的话,我不知道函数IsDataReceive是怎么写的:
UdpClient.Receive
此操作将阻塞,直到套接字上返回一条消息为止
如果您不想执行阻止操作,可以使用:
UdpClient.ReceiveAsync