c#UDP协议通讯

    技术2022-07-11  93

    在写具体的用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

    Processed: 0.010, SQL: 9