我有多个设备可以发送udp数据包并在1024端口上监听命令。 我希望udp服务器在端口1200上连续监听。 但是,一旦它在此端口上接收到任何数据,它就应该被中断以执行其他任务。 我试图自己理解它,但我真的很困惑。 如果有人可以帮助我理解线程和中断的概念以及如何中断它。我很困惑,因为我无法告诉套接字监听特定的IP。
我尝试了很多事情,但后来我又对线程的了解不足,这使我无法获得成功。所以我现在真的需要帮助。
这是一次一次连接的代码-我每秒钟调用一次,以接收来自每个远程IP的数据并在页面上更新它。
Socket serverSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
public byte[] serverSockets(String IPadd, byte[] dataToSend)
{
byte[] receivebytes = new byte[20] ;
try
{
IPAddress iPAddress = IPAddress.Parse(IPadd);
int port = 1024;
IPEndPoint iPEnd = new IPEndPoint(iPAddress, port);
//Assign the any IP of the machine and listen on port number 1200
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 1200);
serverSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
serverSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1000);
serverSocket.Bind(ipEndPoint);
ep = (EndPoint)iPEnd;
serverSocket.SendTo(dataToSend, ep);
// Thread.Sleep(1000);
serverSocket.Receive(receivebytes);
}
catch(Exception ex)
{
}
finally
{
serverSocket.Dispose();
}
return receivebytes;
}
这是我需要做的任务- 需要创建一个线程 连续侦听端口1200,当在该端口上接收到数据时,它应该对该数据执行某些任务,然后再次开始侦听(这意味着线程应该再次启动)。我不知道应该采取什么步骤来做到这一点。我该如何停止两者之间的线程以执行其他任务。