UDP(User Datagram Protocol 用户数据报协议),是一个轻量级的、不可靠的
面向数据绑定、无连接的协议,用于可靠性不是非常重要的情况。
-
QUdpSocket 支持IPV4的广播,广播一般用来实现发现协议。
-
要广播一个数据报,则只需要发送它到一个特殊的地址QHostAddress::Broadcast(即255.255.255.255)
或者是本地网络的广播地址。 -
Udp客户端向UDP服务器发送一定长度的请求报文,报文大小的限制与各系统的协议实现有关
,但不得超过其下层IP协议规定的64KB;UDP服务器同样以报文形式做出响应。
如果服务器未收到请求,客户端不会重发的,因此报文的传输是不可靠的。
例如,常用的QQ聊天软件就是使用UDP协议发送消息,所以会出现接收不断信息。
-
UDP方式下客户端不与服务器建立连接,他只负责调用发送函数向服务器发出数据报;
服务器也不从客户端接收连接,只负责调用接收函数,等待来自客户端的数据到达。 -
demo
【1】API:
//如果至少有一个数据报等待读取,则返回true
bool hasPendingDatagrams() ;
//返回第一个挂起的UDP数据报的大小
qint64 pendingDatagramSize()
//接收不大于maxsize字节的数据报并将其存储在data中 ,发送方的主机地址和端口存储在address和*port中
qint64 readDatagram(char *data, qint64 maxSize, QHostAddress *address = nullptr, quint16 *port = nullptr)
//将数据报datagram发送到主机地址主机和端口
qint64 writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port)
【2】
//设置皮肤样式表
{
QFile *qssFile =new QFile(":/pic/pifu.qss");
qssFile->open(QFile::ReadOnly);
qApp->setStyleSheet(QString::fromLatin1(qssFile->readAll()));
qssFile->close();
UdpSend w;
}
【3】设置背景图
//this->setWindowTitle("发送端");
QPixmap pixmap = QPixmap(":/pic/frist1.jpg").scaled