Qt5 UDP开发
来源:互联网 发布:网络安全法考试单选 编辑:程序博客网 时间:2024/05/20 18:41
最近在学习qt下socket开发,今天先学习了一下qt下udp socket的开发。参考了qt5的文档。以及一些其他的参考书。
UDP是指user datagram protocol ,用户数据报协议,是一种轻量级,不可靠的,面向数据报的,非链接的协议。常用在一下对数据可靠性要求不是很重要的程序中。
这个类最常用的方式就是利用bind()函数绑定到某一地址和端口,然后调用 writeDategram()函数和
readDatagram()函数进行数据传输。
如果你想要使用标准的QIODevice函数例如read(),readLine(),write()等,你必须首先利用connectToHost()函数把socket直接连接到通信的另一端。
socket每向网络写入一个数据报就会发射bytesWritten()信号。如果你只是想发送一份数据报,你并不需要调用bind()函数进行绑定。
无论何时有数据报到达时 socket就会发射readyRead()信号。这样的话,hasPendingDatagram()函数会返回true值。然后调用 pendingDatagramSize()函数来获得到达的第一份数据报的字节大小,最后调用readDatagram()函数来读取到达的数据报。
最后要注意的一点是:当收到readyRead()信号时,已到达的数据报都应该被读取,否则,当下一次有数据报到达的时候,readyRead()信号就不会发射了。
下面是QT参考文档上的一个例子:
void server::initSocket(){udpSocket = new QUdpSocket(this);//构建一个udpsocket;udpSocket->bind(QHostAddress::LocalHost,7755);//绑定到本机地址的7755端口//连接readyRead()信号与槽readPendingDatagram()来读取数据报connect(udpSocket,SIGNAL(readyRead()),this,SLOT(readPendingDatagram()));}void server::readPendingDatagram() //读取数据的槽实现{while(udpSocket->hasPendingDatagram())//只要socket有数据到达,一直循环的读取{QByteArray datagram;datagram.resize(udpSocket->pendingDatagramSize());//调整datagram的大小与socket收到的数据大小一样QHostAddress sender;//发送者的地址qint64 senderPort;//发送者的端口号udpSocket->readDatagram(datagram.data(),datagram.size(),&sender,&senderPort);//读取数据报processTheDatagram(datagram);//处理读取到的数据报}}
1 0
- Qt5 UDP开发
- Qt5 UDP广播
- Qt5 UDP网络通讯详解
- Qt5开发
- QT5 下udp 编程实例
- 【Qt5开发及实例】29、实现服务器端的编程,UDP协议
- 【Qt5开发及实例】30、实现客户端的编程,UDP协议
- Qt5--UDP图片传输并显示
- Qt5--UDP图片传输并显示
- 构建Qt5开发环境
- QT5 地图开发步骤
- Qt5开发笔记
- Qt5开发之控件
- QT5.6 开发笔记
- Qt5插件开发
- 搭建Qt5+MinGW开发环境
- ubuntu + codeblocks12.11 + qt5开发
- QT5.2 Android开发环境
- 【基于Jsoup】Android_App暴走笑话开发(二)
- java ssh整合出的错java.lang.NoSuchMethodError antlr.collections.AST.getLine()I
- opencv 图片转视频
- 代码实现利用inf文件安装硬件驱动
- Maven +SpringMVC 搭建时候遇到视图view跳转失败问题
- Qt5 UDP开发
- object-c之音频视频的播放
- nyc_taxi_data处理手记
- ubuntu旧版本源问题
- Git简单使用
- 设计模式(单例模式)
- poj 3352 Road Construction 双连通图
- x64 Windows下配置C语言开发MySQL的环境遇到的问题
- Qt udp