当前位置:首页 > 物联网 > 网络协议
[导读]   QUdpSocket   QUdpSocket是QAbstractSocket 的子类,它们都继承了QIODevice。所以可以用QUdpSocket进行发送接收数据。它和QTcpS

  QUdpSocket

  QUdpSocket是QAbstractSocket 的子类,它们都继承了QIODevice。所以可以用QUdpSocket进行发送接收数据。它和QTcpSocket最大的区别也就是,发送数据之前不需要建立连接。

  1、UDP是一种基于无连接的、不可靠的数据报传输协议。

  2、套接字可以当作一种输入输出设备,QUdpSocket可以调用writeDatagram()和readDatagram()对套接字进行读写。每当一次数据报写入完成后会释放bytesWritten()信号。

  3、QUdpSocket在读之前要先调用bind()函数进行绑定,如果仅仅只是写的话则无需绑定。

  4、当有数据报可读时,QUdpSocket会发出readRead()信号,可以通过定义关联该信号的槽函数,对数据进行读取。此时hasPendingDatagrams()也会返回true,pendingDatagramSize()可以用于获取数据报长度,然后调用读函数进行数据的读取。

  UDP协议详解

  UDP报头由4个域组成,其中每个域各占用2个字节,具体如下: 端口号 ,目标端口号 ,数据报长度 ,校验值

  UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。

  数据报的长度是指包括报头和数据部分在内的总的字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。数据报的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。

  UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。这与TCP协议是不同的,后者要求必须具有校验值。

  UDPvs.TCP

  UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。

  与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。

  相对于TCP协议,UDP协议的另外一个不同之处在于如何接收突法性的多个数据报。不同于TCP,UDP并不能确保数据的发送和接收顺序。例如,一个位于客户端的应用程序向服务器发出了以下4个数据报

  D1

  D22

  D333

  D4444

  但是UDP有可能按照以下顺序将所接收的数据提交到服务端的应用:

  D333

  D1

  D4444

  D22

  事实上,UDP协议的这种乱序性基本上很少出现,通常只会在网络非常拥挤的情况下才有可能发生。

  UDP协议的几个特性

  1) UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

  

  (2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。

  (3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。

  (4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。

  (5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。

  (6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

  虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。例如,在屏幕上报告股票市场、在屏幕上显示航空信息等等。UDP也用在路由信息协议RIP(RouTIng InformaTIon Protocol)中修改路由表。在这些应用场合下,如果有一个消息丢失,在几秒之后另一个新的消息就会替换它。UDP广泛用在多媒体应用中,例如,Progressive Networks公司开发的RealAudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客户机的一种软件,该软件使用的RealAudio audio-on-demand protocol协议就是运行在UDP之上的协议,大多数因特网电话软件产品也都运行在UDP之上。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

甲类电源是一种开关式电源,它通过快速开关来控制电压,使输出电压保持恒定。甲类电源的输出电流波形接近直流,能够提供高效率和高功率输出。

关键字: 甲类电源 线性电源 电源

现在的智能家居越来越受欢迎,市面上出现了各式各样的无线收发模块,功能也各不相同,当然了,大家不能盲目的去采购,这样可能会带来一些不必要的损失。

关键字: 无线收发模块 功耗 网络协议

直流电是指电流方向始终保持不变的电流。在实际应用中,我们经常需要调整直流电的电流大小,以满足不同的需求。本文将从多个方面详细阐述直流电如何调节电流。

关键字: 直流 电流 负载调节

在人工智能的快速发展中,加强AI监管与推动AI技术的进步同等重要。从技术角度来看,可以通过可解释AI等技术手段增强AI的可信度。

关键字: 人工智能 AI 增强AI

随着科技的快速发展,人脸识别技术已经广泛应用于各个领域,如手机解锁、支付验证、门禁系统等。然而,有时我们可能会遇到人脸识别一直失败的情况,这不仅影响了用户体验,还可能引发安全隐患。本文将深入探讨人脸识别失败的原因,并提供...

关键字: 人脸识别 人工智能

随着科技的快速发展,人工智能(AI)逐渐从科幻概念变为现实,其应用广泛渗透到各行各业,为人类社会带来了前所未有的便利与机遇。然而,正如任何新兴技术一样,人工智能的发展也面临着诸多困难与挑战。本文将深入剖析人工智能发展所面...

关键字: 人工智能 AI

在科技迅猛发展的今天,人工智能(AI)已经从一个前沿概念转变为全球范围内的热门话题,深刻影响着我们的日常生活、工作和思维方式。本文将对当前人工智能的现状进行深入分析,从技术发展、应用领域、市场竞争以及挑战与机遇等多个维度...

关键字: 人工智能 AI

在科技的浪潮中,人工智能(AI)已经从一个遥不可及的概念,逐渐转变为影响我们日常生活的现实力量。无论是语音识别、图像识别,还是自动驾驶、医疗诊断,人工智能都展现出了强大的潜力和无限的可能性。那么,未来的人工智能发展前景又...

关键字: 人工智能 AI

在智能家居日益普及的今天,无线开关作为实现家居自动化的重要工具,受到了越来越多消费者的青睐。然而,对于许多家庭来说,如何将现有的普通灯具接入无线开关,实现远程控制,仍然是一个值得探讨的问题。本文将详细阐述普通灯具接入无线...

关键字: 无线开关 智能家居

本文旨在为读者提供一篇详尽的AWVS 13使用教程,从安装配置到实战应用,全面解析这一强大的Web应用安全扫描工具。通过本文的学习,读者将能够掌握AWVS 13的基本操作,提高Web应用的安全性。

关键字: awvs13 Web应用
关闭
关闭