网络通信—udp使用领悟

一 了解TCP与UDP协议区别

TCP(传输控制协议):是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议。

UDP(用户数据报协议):是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。

大家可能很模糊,就这样举个生动的例子来讲吧:

tcp:一对一的信息传输机制,好比甲对乙打电话,必须保证两方面 一、有电话线,处于连接状态  二、双方一个打电话,一个接听 

udp:一对多的信息传输机制,好比一是一个广播站,其他的是众多的收音机;他们之间没有发生连接,广播站只负责发出信号,收音机只是在连接时接收信号,需要确定两个因素 波段和收音机的信号接收地区(也即是指的是端口号)

二  我做了一个小例子来体会这种信息传递机制

重点区域代码实现:

      private void button1_Click(object sender, EventArgs e)
        {
            int s = Convert.ToInt32(textBox4.Text);
            UdpClient uc = new UdpClient(s);//确定广播发送站所处的地址(地区)


            IPEndPoint remoteIp = new IPEndPoint(IPAddress.Parse(textBox2.Text), Convert.ToInt32(textBox3.Text));//确定广播信息的波段(IPAddress.Parse(textBox2.Text), 以及收听所在地区 后面的端口号

            uc.Connect(remoteIp);//将广播发送站与所定义的广播信息波段、区域实现连接 达成传输层

            Byte[] sendBytes = Encoding.UTF8.GetBytes(textBox1.Text);
            uc.Send(sendBytes, sendBytes.Length);

            uc.Close();
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            while (true)//在这里建立一个死循环,保证始终在收听广播信息
            {
                UdpClient uc = new UdpClient(Convert.ToInt32(textBox3.Text));//收音机在使用之前,必须确定了其所在地  确定只能接受所在所能收到的信号
                IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
                //IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);// 在这里确定接收广播的波段,和所在地(空着或者与上述的所在扫地一样)

                Byte[] receiveBytes;
                string returnData;
                receiveBytes = uc.Receive(ref RemoteIpEndPoint);  // 这里加 ref 的目的是 通过 udpClient.Receive() 这个函数,得到服务器主机的 ip 地址。
                returnData = Encoding.UTF8.GetString(receiveBytes);

                textBox5.Text += "\r\n"+"发送方的Ip地址是:" + RemoteIpEndPoint.Address + "\r\n" + "发送信息是:" + returnData;
                uc.Close();//这个地方的作用是在下次调用这个udpclient时,及时将所使用端口,解散掉,不然出现报错,端口被一直占用
            }

注意一下几个方面问题:

一:使用完立刻关闭udpclient,否则在下次调用时出现端口被占用的错误提示

二:在接收事件中用到一个死循环,保证及时接受信息

原文地址:https://www.cnblogs.com/liuxiaowei0543/p/3120716.html