C#

时间:2018-08-14 01:33:59

标签: c# asp.net multithreading udp

我有多个设备可以发送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,当在该端口上接收到数据时,它应该对该数据执行某些任务,然后再次开始侦听(这意味着线程应该再次启动)。我不知道应该采取什么步骤来做到这一点。我该如何停止两者之间的线程以执行其他任务。

0 个答案:

没有答案