| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System;
- using System.Net;
- using System.Net.Sockets;
- namespace EasyTemplate.Service.Common
- {
- public class UdpServer
- {
- private UdpClient udpClient;
- private Thread listenThread;
- private const int ListenPort = 10000; // 监听端口号
- string data = string.Empty;
- public UdpServer()
- {
- udpClient = new UdpClient(ListenPort);
- listenThread = new Thread(new ThreadStart(ListenForClients));
- listenThread.IsBackground = true; // 设置为后台线程,当主程序结束时自动结束
- listenThread.Start();
- }
- private void ListenForClients()
- {
- try
- {
- while (true) // 无限循环监听客户端消息
- {
- Console.WriteLine("Waiting for broadcast");
- IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, ListenPort);
- byte[] bytes = udpClient.Receive(ref anyIP); // 接收数据
- data = Encoding.UTF8.GetString(bytes);
- Console.WriteLine($"Received broadcast from {anyIP} :");
- Console.WriteLine($" {Encoding.UTF8.GetString(bytes, 0, bytes.Length)}");
- }
- }
- catch (Exception e)
- {
- Console.WriteLine(e.ToString());
- }
- }
- public void StopServer()
- {
- udpClient.Close(); // 关闭UdpClient以停止监听
- }
- }
- }
|