示例目的:使用控制台项目模板分别新建一个服务器和一个客户端,实现两两通讯
1. 新建服务器
1 static UdpClient udpServer; 2 static void Main(string[] args) 3 { 4 udpServer = new UdpClient(61000); // 当前服务器使用的端口 5 udpServer.Connect("127.0.0.1", 50000); // 与客户端建立连接 6 Console.WriteLine("服务端已经开启......"); 7 8 #region 开启线程保持通讯 9 10 var t1 = new Thread(ReciveMsg); 11 t1.Start(); 12 var t2 = new Thread(SendMsg); 13 t2.Start(); 14 15 #endregion 16 } 17 18 /// <summary> 19 /// 接收消息 20 /// </summary> 21 static void ReciveMsg() 22 { 23 24 var remoteIpEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 50000); // 远程端点,即发送消息方的端点 25 while (true) 26 { 27 byte[] receiveBytes = udpServer.Receive(ref remoteIpEndPoint); // 接收消息,得到数据报 28 string returnData = Encoding.UTF8.GetString(receiveBytes); // 解析字节数组,得到原消息 29 Console.WriteLine($"{remoteIpEndPoint.Address}:{remoteIpEndPoint.Port}," + returnData.ToString()); 30 } 31 32 } 33 34 /// <summary> 35 /// 发送消息 36 /// </summary> 37 static void SendMsg() 38 { 39 while (true) 40 { 41 var msg = Console.ReadLine().ToString(); // 获取控制台字符串 42 byte[] sendBytes = Encoding.UTF8.GetBytes(msg); // 将消息编码成字符串数组 43 udpServer.Send(sendBytes, sendBytes.Length); // 发送数据报 44 } 45 }
2. 新建客户端
static UdpClient udpClient; static void Main(string[] args) { udpClient = new UdpClient(50000); // 当前客户端使用的端口 udpClient.Connect("127.0.0.1", 61000); // 与服务器建立连接 Console.WriteLine("客户端已启用......"); #region 开启线程保持通讯 var t1 = new Thread(SendMsg); t1.Start(); var t2 = new Thread(ReciveMsg); t2.Start(); #endregion } /// <summary> /// 发送消息 /// </summary> static void SendMsg() { while (true) { var msg = Console.ReadLine().ToString(); // 获取控制台字符串 byte[] sendBytes = Encoding.UTF8.GetBytes(msg); // 将消息编码成字符串数组 udpClient.Send(sendBytes, sendBytes.Length); // 发送数据报 } } /// <summary> /// 接收消息 /// </summary> static void ReciveMsg() { var remoteIpEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 61000); // 远程端点,即发送消息方的端点 while (true) { byte[] receiveBytes = udpClient.Receive(ref remoteIpEndPoint); // 接收消息,得到数据报 string returnData = Encoding.UTF8.GetString(receiveBytes); // 解析字节数组,得到原消息 Console.WriteLine($"{remoteIpEndPoint.Address}:{remoteIpEndPoint.Port}," + returnData.ToString()); } }
3. 启动服务器和客户端,查看效果
不足之处还请指点