110,533
社区成员
发帖
与我相关
我的任务
分享
public class SocketListener
{
public event DltMessage EvtMessageReceived;// 接收到消息后事件
private Thread work = null;
private UdpClient receiveClient = null;
private int port = 11111;
/// <summary>
/// 开始监听
/// </summary>
public void StartListen()
{
work = new Thread(new ThreadStart(Start));
work.IsBackground = true;
work.Start();
}
public void Start()
{
try
{
IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, port);
using (receiveClient = new UdpClient(remoteEP))
{
while (true)
{
try
{
//接收
byte[] bytes = receiveClient.Receive(ref remoteEP);
MessageReceived(bytes);
Thread.Sleep(100);
}
catch(Exception e)
{
Console.WriteLine("接收udp消息错误,原因:" + e.Message);
}
}
}
}
}
/// <summary>
/// 接收完消息后触发
/// </summary>
private void MessageReceived(byte [] bytes)
{
if (EvtMessageReceived != null)
{
EvtMessageReceived(bytes);
}
}
}
public class SocketListener
{
public event DltMessage EvtMessageReceived;// 接收到消息后事件
private Thread work = null;
private Socket socket = null;
private int port = 11111;
/// <summary>
/// 开始监听
/// </summary>
public void StartListen()
{
work = new Thread(new ThreadStart(Start));
work.IsBackground = true;
work.Start();
}
public void Start()
{
try
{
IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, port);
using (receiveClient = new UdpClient(remoteEP))
{
while (true)
{
try
{
//接收
byte[] bytes = receiveClient.Receive(ref remoteEP);
MessageReceived(bytes);
Thread.Sleep(100);
}
catch(Exception e)
{
Console.WriteLine("接收udp消息错误,原因:" + e.Message);
}
}
}
}
}
/// <summary>
/// 接收完消息后触发
/// </summary>
private void MessageReceived(byte [] bytes)
{
if (EvtMessageReceived != null)
{
EvtMessageReceived(bytes);
}
}
}
接收到消息后通过委托拿到结果,再进行处理,这里你需要定义消息的格式,比如包头+包体:0001|123456
0001为包头,123456为包体
public static void main()
{
SocketListener sl = new SocketListener();
sl.EvtMessageReceived += new DltMessage(MessageTransfer);
}
public void MessageTransfer(byte[] bytes)
{
string msg = Encoding.Default.GetString(bytes);//这里需要注意编码格式,双方编码格式要一致
string[] message = msg.Split('|');
if(message[0].Equals("0001"))
{
//点击开始按钮...只要拿到了消息就可以为所欲为了
}
}