Dum*_*pen 6 c# multithreading udp
我正在创建一个运行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);
}
Run Code Online (Sandbox Code Playgroud)
重要的一行是client.Receive(ref remoteIp);
这是我开始我的线程的方式:
Thread recieveChallengeThread = new Thread(new ThreadStart(RecieveChallenge));
recieveDataThread.Start();
Run Code Online (Sandbox Code Playgroud)
client.Receivebyte[]连接关闭时将返回空.您只需关闭连接并将提供的代码更改为:
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);
}
Run Code Online (Sandbox Code Playgroud)
虽然您可能想要RecieveChallenge返回一个布尔值来指示它是否已关闭(当然忽略了您的线程只会收到一条消息的事实).
| 归档时间: |
|
| 查看次数: |
11533 次 |
| 最近记录: |