作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在创建一个线程来运行接收消息的 UDP 客户端,在它接收到消息后我想关闭 UDP 客户端然后结束线程,但我不知道如何结束线程,因为“接收”一直运行直到得到答案。
到目前为止,这是我的代码:
private void RecieveChallenge()
{
UdpClient client = new UdpClient(26000);
IPEndPoint remoteIp = new IPEndPoint(IPAddress.Any, 0);
Byte[] receivedBytes = client.Receive(ref remoteIp);
string ipAddress = Encoding.ASCII.GetString(receivedBytes);
}
重要的一行是 client.Receive(ref remoteIp);
下面是我的话题开始的方式:
Thread recieveChallengeThread = new Thread(new ThreadStart(RecieveChallenge));
recieveDataThread.Start();
最佳答案
client.Receive
将在连接关闭时返回一个空的 byte[]
。您应该只需要关闭连接并将提供的代码更改为:
private void RecieveChallenge()
{
UdpClient client = new UdpClient(26000);
IPEndPoint remoteIp = new IPEndPoint(IPAddress.Any, 0);
Byte[] receivedBytes = client.Receive(ref remoteIp);
if (receivedBytes == null || receivedBytes.Length == 0)
return;
string ipAddress = Encoding.ASCII.GetString(receivedBytes);
}
尽管您可能希望 RecieveChallenge
返回一个 bool 值,指示它是否已关闭(当然忽略了您的线程只会收到一条消息这一事实)。
关于c# - 使用 UDP 接收时安全地结束线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9122634/
我正在尝试在现有的 Angular 项目中安装 AWS Amplify。我将 Cognito 用户池与 Cognito 联合身份一起使用。我可以登录,但是当我尝试调用我的 API 时,我收到消息 {"
我有一个 AWS 托管的 Elasticsearch 服务(比如 smallES),它附加了一个正常工作的 S3 存储桶,其中包含过去 1 年的逐日滚动索引。出于某种商业原因,我创建了另一个 AWS
我是一名优秀的程序员,十分优秀!