码迷,mamicode.com
首页 > 其他好文 > 详细

QUdpSocket和QTcpSocket的使用

时间:2015-08-05 10:44:19      阅读:1059      评论:0      收藏:0      [点我收藏+]

标签:

一、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()会立即关闭套接字,并丢弃可读取的字节。




QUdpSocket和QTcpSocket的使用

标签:

原文地址:http://blog.csdn.net/walker19900515/article/details/47291223

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!