qudp socket信号不触发_QUdpSocket和QTcpSocket的使用

本文介绍了QUdpSocket和QTcpSocket在Qt中的使用方法。QUdpSocket作为UDP协议的实现,无连接、不可靠,通过bind()、writeDatagram()和readDatagram()进行操作,信号如bytesWritten()和readyRead()指示数据状态。QTcpSocket则对应TCP协议,需要建立连接,提供connected()和disconnected()信号,通过write()和read()读写数据。
摘要由CSDN通过智能技术生成

标签:

一、QUdpSocket

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

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

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

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

void Server::initSocket()

{

udpSocket = new QUdpSocket(this);

udpSocket->bind(QHostAddress::LocalHost, 7755);

connect(udpSocket, SIGNAL(readyRead()),

this, SLOT(readPendingDatagrams()));

}

void Server::readPendingDatagrams()

{

while (udpSocket->hasPendingDatagrams()) {

QByteArray datagram;

datagram.resize(udpSocket->pendingDatagramSize());

QHostAddress sender;

quint16 senderPort;

udpSocket->readDatagram(datagram.data(), datagram.size(),

&sender, &senderPort);

processTheDatagram(datagram);

}

}

二、QTcpSocket

1、TCP协议是面向连接的、可靠的传输协议

2、QTcpSocket在使用之前,要先调用connectToHost()和目的主机建立连接,数据传输结束后要调用disconnectFromHost()断开连接。连接建立之后会发送connected()信号,连接断开之后会发送disconnected()信号。

3、当有数据可读时会发出readyRead()信号,可以通过byteAvailable()函数获取可读取的字节数。

4、可以调用write()和read()函数对套接字进行读写。

5、服务器编程时,一个服务器可能会连接到好几个客户端,此时可以调用setSocketDescriptor()协议设置套接字描述符。

6、abort()函数,和disconnectFromHost()函数功能类似,abort()会立即关闭套接字,并丢弃可读取的字节。

标签:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值