UDP协议服务端

使用windows服务作为宿主,

windows服务代码:

public partial class KFService : ServiceBase
    {
        NetWorkProcess.NWProcess nw;
        public KFService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            int lisenport = 35868;
            int sendport = 35869;
            int lisenport_B = 35867;
            string _VID = "";
            string _PID = "";
            

            //本机IP
            IPEndPoint ip = new IPEndPoint(IPAddress.Any, lisenport);
            IPEndPoint ip_B = new IPEndPoint(IPAddress.Any, lisenport_B);
            nw = new NetWorkProcess.NWProcess(ip, ip_B, sendport);
            nw.Start();
        }

        protected override void OnStop()
        {
            if (nw != null)
                nw.Stop();
            nw = null;
        }
    }

网络处理类

public class NWProcess
    {
        int receivecount = 0;
        private IPEndPoint _listenIP;
        private IPEndPoint _listenIP_B;
        private Thread _listenThread;
        private Thread _listenThread_B;
        private static object _synobj = new object();
        private bool _apprun = false;
        UdpClient _udplistener;
        UdpClient _udplistener_B;
        int _sendport = 35869;
        string _reporthead = "A55ACBBC";
        /// <summary>
        /// 要侦听的网络地址
        /// </summary>
        /// <param name="IP"></param>
        public NWProcess(IPEndPoint IP, IPEndPoint IP_B, int sendport)
        {
            _listenIP = IP;
            _listenIP_B = IP_B;
            _sendport = sendport;
        }

        /// <summary>
        /// 启动侦听
        /// </summary>
        public void Start()
        {
            _apprun = true;
            _listenThread = new Thread(new ThreadStart(StartListen));
            _listenThread.Start();
            _listenThread_B = new Thread(new ThreadStart(StartListen_B));
            _listenThread_B.Start();
        }

        private void StartListen()
        {
            try
            {
                _udplistener = new UdpClient(_listenIP);
                while (_apprun)
                {
                    try
                    {
                        IPEndPoint rip = new IPEndPoint(IPAddress.Any, 0);
                        byte[] buf = _udplistener.Receive(ref rip);
                        rip.Port = _sendport;
                        WritLogFile.Log.WriteFile(string.Format("接收消息{2}IP:{0};Message:{1}", rip.Address.ToString(), BitConverter.ToString(buf), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff")));
                        NetDataProcess.Process(buf, rip);//数据发送走进行处理
                    }
                    catch (Exception ex)
                    {
                        WritLogFile.Log.WriteFile("NWProcess.StartListen():" + ex.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                WritLogFile.Log.WriteFile("NWProcess.StartListen():" + ex.Message);
            }
        }

        private void StartListen_B()
        {
            try
            {
                _udplistener_B = new UdpClient(_listenIP_B);
                while (_apprun)
                {
                    try
                    {
                        IPEndPoint rip = new IPEndPoint(IPAddress.Any, 0);
                        byte[] buf = _udplistener_B.Receive(ref rip);
                        rip.Port = _sendport;
                        WritLogFile.Log.WriteFile(string.Format("接收消息{2}IP:{0};Message:{1}", rip.Address.ToString(), BitConverter.ToString(buf), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff")));
                        NetDataProcess.Process(buf, rip);
                    }
                    catch (Exception ex)
                    {
                        WritLogFile.Log.WriteFile("NWProcess.StartListen():" + ex.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                WritLogFile.Log.WriteFile("NWProcess.StartListen():" + ex.Message);
            }
        }
        /// <summary>
        /// 停止侦听
        /// </summary>
        public void Stop()
        {
            _apprun = false;

            try
            {
                if (_udplistener != null)
                    _udplistener.Close();
                _udplistener = null;
                if (_udplistener_B != null)
                    _udplistener_B.Close();
                _udplistener_B = null;
            }
            catch
            { }
            try
            {
                if (_listenThread != null)
                    _listenThread.Abort();
                _listenThread = null;
                if (_listenThread_B != null)
                    _listenThread_B.Abort();
                _listenThread_B = null;
            }
            catch { }

        }



    }

UDP回复

UdpClient client = new UdpClient();
                    byte[] buf = En_DecryptClass.Encrypt(Sendbuf.ToArray());
                    client.Send(buf, buf.Length, ip);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值