📄 udplsten.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 + -