gpt4 book ai didi

c# - 使用 UDP 接收时安全地结束线程

转载 作者:太空狗 更新时间:2023-10-29 22:23:52 26 4
gpt4 key购买 nike

我正在创建一个线程来运行接收消息的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com