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

本文介绍了一个简单的UDP通信程序实现,包括初始化、接收和发送消息的功能,并对比了TCP和UDP在网络传输中的不同特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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:**客户端在发送数据前无需与服务器端建立连接,即使服务器端不在线也可以发送,但是不能保证服务器端可以收到数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yyuanyuxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值