UDP服务端客户端
界面:
代码:form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace udpClient { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void ShowLog(string msg) { txtMsg.Text += msg + "\r\n"; } UdpClient udpServ = null; bool bsrvRun = false; private void btnOpen_Click(object sender, EventArgs e) { if(udpServ==null) { int udpPort = 0; if (!int.TryParse(txtSeverPort.Text, out udpPort)) { MessageBox.Show("端口必须为数字"); return; } udpServ = new UdpClient(udpPort, AddressFamily.InterNetwork); bsrvRun = true; ReceiveMessage(); btnOpen.Enabled = false; ShowLog("UDP服务端启动监听端口"+ txtSeverPort.Text); } } private async void ReceiveMessage() { while (bsrvRun) { if (udpServ == null) return; try { UdpReceiveResult udpReceiveResult = await udpServ.ReceiveAsync(); string remoteip = udpReceiveResult.RemoteEndPoint.Address.ToString(); string message = Encoding.UTF8.GetString(udpReceiveResult.Buffer); ShowLog("接收到"+ remoteip + "的Udp数据:" + message); } catch (Exception ex) { ShowLog("UDP客户端发生异常ReceiveMessage:" + ex.Message); } } } private void btnCloseSv_Click(object sender, EventArgs e) { bsrvRun = false; if (udpServ == null) return; try { udpServ.Client.Shutdown(SocketShutdown.Both); udpServ.Close(); udpServ = null; } catch { } ShowLog("UDP服务端已关闭"); } UdpClient udpCl = null; private async void btnSend_Click(object sender, EventArgs e) { if(udpCl==null) udpCl = new UdpClient(0, AddressFamily.InterNetwork); byte[] buffer = Encoding.UTF8.GetBytes(txtSendData.Text); await udpCl.SendAsync(buffer, buffer.Length, new IPEndPoint(IPAddress.Parse(txtRemotIP.Text), int.Parse(txtRemotPort.Text))); ShowLog(string.Format("向服务端{0}:{1}发送UDP包:{2}", txtRemotIP.Text, txtRemotPort.Text, txtSendData.Text)); } } }
-----------------------------------------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2020-09-21 【转】.NET Core微服务之基于Polly+AspectCore实现熔断与降级机制