c#模块开发系列01(UDP通讯模块)

来源:互联网 发布:淘宝台湾客户无法下单 编辑:程序博客网 时间:2024/06/08 12:41

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;


namespace Train.Sock
{
   
    /// <summary>
    /// SOCK CLASS
    /// </summary>
    class BE_D10Sock
    {

        private UdpClient m_Client; //Client
        private IPEndPoint m_Remotehost; //create RemoteHost
        private int m_Port = 3006;
        private Thread startServer;
        private string ipadd = "192.168.1.139";
        private Boolean SockStartFlag = false;

        public delegate void ReciverEventHandler(object sender, ReciverEventArgs e);
        public  event ReciverEventHandler Reciver;

 


        public BE_D10Sock(string p_IP ,int p_Port)
        {
            ipadd = p_IP;
            m_Port = p_Port;
        }

        public BE_D10Sock()
        {
            ipadd = "192.168.1.139";
            m_Port = 3006;
        }

        /// <summary>
        /// Set or Get RemoteIP
        /// </summary>
        public string RemoteIP
        {
            get{return ipadd;}
            set{ipadd=value ;}
        }

        public int Port
        {
            get { return m_Port; }
            set { m_Port = value; }
        }

 

        /// <summary>
        /// Start Udp Server
        /// </summary>
        public void startUDP()
        {

            if (SockStartFlag==false)
            {
                m_Client = new UdpClient(m_Port);
                m_Remotehost = new IPEndPoint(IPAddress.Parse(ipadd), 0);
                startServer=new Thread(new ThreadStart(start_server));
                startServer.Start();
                SockStartFlag = true;
            }
        }

        /// <summary>
        /// Reveiver Data
        /// </summary>
        private void start_server()
        {
            while (true)
            {
                Byte[] recData = m_Client.Receive(ref m_Remotehost);
                string Message = System.Text.Encoding.BigEndianUnicode.GetString(recData);
                if (Message.Length != 0 )
                {
                    Reciver(this, new ReciverEventArgs(Message));
                }
                
            }
        }

    }

    public class ReciverEventArgs : EventArgs
    {
        public string ReciverMessage{get;set;}
        public  ReciverEventArgs(string p_Message)
        {
            this.ReciverMessage = p_Message;
        }
    }
}

原创粉丝点击