c#UDP协议通讯

48 篇文章 0 订阅

在写具体的用c#实现UDP通讯的方式之前,我们要先搞清楚相关的概念,那就是什么是UDP协议。

UDP和TCP一样,是同属于TCP/IP协议簇的传输层协议:

这里一定要注意TCP/IP是指一堆协议的集合,而这些集合之中又属TCP协议和IP协议比较重要,所以就将此协议集合以TCP/IP的方式进行命名。

那么UDP协议和TCP协议有什么区别呢?

TCP协议是面向连接的协议,A端到B端要传输数据则需要进行三次握手建立连接,之后便是点对点的数据通讯,对于数据来说是可靠的。

而UDP协议是一种非连接的协议,在传输数据之前并没有什么三次握手建立连接的概念,它什么时候想发送数据就什么时候发送数据,什么时候想停止发送就什么时候停止发送。根本不管有没有接收端,这样做的结果便是其即时性很高,对比TCP能够大大减少数据延迟,多用于同步通信。但缺点是容易丢失数据,且不能保证数据的时序性。

好了,弄清楚了UDP协议的概念,那么我们下面便来说说如何在C#语言之中实现UDP的通信。

要实现UDP通信,我们需要使用UdpClient类。

创建监听的核心代码:

        UdpClient udpserver;
        private void udpListen()
        {
            udpserver = new UdpClient(8888);//参数为要进行UDP监听的端口
        }

接收数据的核心代码:

private void getMsg()//开启一个异步线程去执行该方法
{
    //定义一个IPEndPoint对象用来装载数据来源的IP和端口信息
    IPEndPoint remoteIpAndPort = new IPEndPoint(IPAddress.Any, 0);
    while (true)
    {
        //等待消息,注意,使用该方法在等待消息时会阻塞线程
        byte[] msgBytes = udpserver.Receive(ref remoteIpAndPort)
        string receivedStr = System.Text.Encoding.UTF8.GetString(msgBytes);
    }
}

 

发送数据的核心代码:

        private void buttonSend_Click(object sender, EventArgs e)
        {
            //将要发送的数据转化成byte数组
            byte[] b = System.Text.Encoding.UTF8.GetBytes("Hello");
            //创建目标IP端口信息
            IPEndPoint sendTo = new IPEndPoint(IPAddress.Parse("192.168.1.233"),1234);
            //发送数据
            this.udpserver.Send(b, b.Length, sendTo);
        }

另外放一个小demo的链接,有需要的拿去:c#UDP通讯demo

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值