C#实现Upd通信(一)--最简单的socket通信

it2023-07-20  69

工作需要用到UPD来设备通信,于是又开始学习这块的知识,首先,学习一个简单的入门程序。 界面如下: 先初始化后,可以给本机发送信息,随时接收

目录

1.例子代码说明初始化接收消息发送消息 2.简单原理

1.例子代码说明

初始化

Socket server; public void InitSocket() { server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); server.Bind(new IPEndPoint(IPAddress.Parse(textBox1.Text), int.Parse(textBox2.Text)));//绑定端口号和IP MessageBox.Show("服务端已经开启"); Thread t1 = new Thread(ReceiveMsg);//开启接收消息线程 t1.IsBackground = true; t1.Start(); }

接收消息

用的while循环来实时获取,所以要记得用线程哦

public void ReceiveMsg() { while (true) { EndPoint port = new IPEndPoint(IPAddress.Any, 0);//得到发送方的ip和端口号 byte[] buffer = new byte[1024]; int length = server.ReceiveFrom(buffer, ref port);//接收数据报 string message = Encoding.UTF8.GetString(buffer, 0, length);//处理好的数据 this.Invoke((EventHandler)(delegate { richTextBox2.AppendText(port.ToString() +" :"+ message+"\r\n"); })); } }

发送消息

private void button1_Click(object sender, EventArgs e) { Thread t2 = new Thread(SendMsg);//开启发送消息线程 t2.IsBackground = true; t2.Start(); } /// <summary> /// 向特定ip的主机的端口发送数据报 /// </summary> public void SendMsg() { EndPoint port = new IPEndPoint(IPAddress.Parse(textBox4.Text), int.Parse(textBox3.Text)); string msg = "ss"; this.Invoke((EventHandler)(delegate { msg = richTextBox1.Text; })); server.SendTo(Encoding.UTF8.GetBytes(msg), port); }

2.简单原理

网络传输协议有TCP和UDP两种,简单来说,就是用于不同设备间通过IP和端口号来通信。 **TCP:**客户端和服务器发送数据前需要“3次握手”连接,结束时使用“四次挥手”释放连接。 **UDP:**客户端在发送数据前无需与服务器端建立连接,即使服务器端不在线也可以发送,但是不能保证服务器端可以收到数据。

最新回复(0)