⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udplsten.cs

📁 博客园WxWinter写的WF工作流入门学习资料及示例代码
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

namespace wxwinter.wf.UDPCommunication
{
    public class UDPListen
    {
        private string state = "close";

        public string State
        {
            get { return state; }            
        }

        //自定义事件,当收到请求数据时
        public event msgReceiptHandler msgReceiptEvent;

        System.Net.IPAddress IP; //要进行监听的网卡的IP
        System.Net.IPEndPoint S_Point; //要进行监听的端口
        System.Net.Sockets.UdpClient sv;//用于监听的UDP实列

        System.Net.IPEndPoint C_Point;//请求信息的主机信息

        bool con = true;//是否继承监听

        //构造函数
        //参数1:要进行监听的网卡的IP
        //参数2:要进行监听的端口
        public UDPListen(string hostIP, int point)
        {
            IP = System.Net.IPAddress.Parse(hostIP);
            S_Point = new System.Net.IPEndPoint(IP, point);
            sv = new System.Net.Sockets.UdpClient(S_Point);
        }

        //开始监听
        public void open()
        {
            if (con)
            { 
                state = "open";
                try
                {
                 //Receive方法将阻塞进行,直到得到请求信息
                //参数ref C_Point将得到请求信息的主机信息
                
                byte[] msg = sv.Receive(ref C_Point);

                //事件参数
                msgReceiptEventArg e = new msgReceiptEventArg();
                e.data = System.Text.Encoding.UTF8.GetString(msg);
                e.requestIP = C_Point.Address.ToString();
                e.requestPoint = C_Point.Port.ToString();

                //如果有事件绑定,就触发事件
                if (msgReceiptEvent != null)
                { msgReceiptEvent(this, e); }
                }
                catch
                {
                    close();
                }
                       
                open();//回调本方法,进行下一轮监听
            }
        }

        //停止监听
        public void close()
        {
            
            con = false;//是否继承监听标志为假
            sv.Close(); //关闭用于监听的UDP实列
            state = "close";
        }
    }


    //自定义事件,当收到请求数据时,的委托
    public delegate void msgReceiptHandler(object sender, msgReceiptEventArg e);

    //自定义事件,当收到请求数据时,的参数
    public class msgReceiptEventArg : System.EventArgs
    {
        public string data;
        public string requestIP;
        public string requestPoint;
    }
  

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -