C# UDP接收数据 多线程

UDP接收数据

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace Switcher
{
    class UDPReceive
    {

        ///   
        /// 服务器端  
        ///   
        ///   
        public void Server(int port)
        {
            try
            {
                UdpClient udpclient = new UdpClient(port);
                while (true)
                {
                    IPEndPoint ipendpoint = null;
                    byte[] bytes = udpclient.Receive(ref ipendpoint); //停在这等待数据  
                    string data = Encoding.Default.GetString(bytes, 0, bytes.Length);

                    Console.WriteLine("{0:HH:mm:ss}->接收数据(from {1}:{2}):{3}", DateTime.Now, ipendpoint.Address, ipendpoint.Port, data);
                }
                udpclient.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, ex.Message);
            }
            Console.ReadKey();
        }


    }
}

UDP 使用线程接收数据

using System;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading;

namespace Switcher
{
    class UDPThread
    {
        UdpClient udpClient;
        Thread UdpThread;
    

  
        public void StartServer(int port)
        {
            if (udpClient != null)
            {
                UdpThread.Abort();
                Thread.Sleep(TimeSpan.FromMilliseconds(500d));
                udpClient.Close();
            }
            try
            {
                udpClient = new UdpClient(port);
                UdpThread = new Thread(new ThreadStart(UdpReciveThread));
                UdpThread.Start();
                //buttonStartServer.Enabled = false;
            }
            catch (Exception y)
            {
                Console.WriteLine("1::{0:HH:mm:ss}->{1}", DateTime.Now, y.Message);
            }
        }
        void UdpReciveThread()
        {
            while (udpClient != null && Thread.CurrentThread.ThreadState == ThreadState.Running)
            {
                try
                {

                    IPEndPoint ipendpoint = null;
                    byte[] bytes = udpClient.Receive(ref ipendpoint); //停在这等待数据  
                    string data = Encoding.Default.GetString(bytes, 0, bytes.Length);

                    Console.WriteLine("{0:HH:mm:ss}->接收数据(from {1}:{2}):{3}", DateTime.Now, ipendpoint.Address, ipendpoint.Port, data);

                }
                catch (Exception y)
                {
                    Console.WriteLine("{0:HH:mm:ss}->{1}", DateTime.Now, y.Message);
                }
            }
         
        }

      

     
    }
}

你可能感兴趣的:(Visual,Studio,c#,udp,开发语言)