QT TcpSocket 客户端-总结【实例】


下面的实例是QT TcpSocket客户端的代码,仔细阅读,对初学者有很大的帮助。


QT TcpSocket客户端

QTcpSocket *           client;

client = new QTcpSocket(this);

//****** connect信号槽函数,绑定一次即可,不要重复绑定!!!******

connect(client, SIGNAL(readyRead()), this, SLOT(slot_readClient()));


/******* 槽函数读取返回的数据 ******

 *使用connent,readyRead()信号,每次socket有新数据,那么都会执行这个槽函数。

 *readAll():读socket中数据。

 */

void slot_readClient()

{

    QString str = client->readAll();

}


/******* 客户端等待socket数据 ******

 * waitForReadyRead():在规定时间内,等待socket是否有数据,有返回true,无返回false

 * 阻塞式的通讯方式

 */

if(client->waitForReadyRead(3000))  

{

qDebug() << "success";

QString str = client->readAll();

}

else

{

qDebug() << "false";

}


/******* 客户端连接服务器端 ******

 * waitForConnected():连接成功与否看这个返回值,成功true,失败false

 */

client->connectToHost(QHostAddress("127.0.0.1"), 12345);

bool c = client->waitForConnected();


/******* TcpSocket发送数据 ******

 * waitForBytesWritten():来让write()动作完全被执行,成功true,失败false

 * flush():write()的数据不经过缓冲区,立即发送。

 */

char* data;

qint64 n_bit = client->write(data);

client->waitForBytesWritten()

client->flush();


/******* 客户端断开服务器端 ******

 * waitForDisconnected():断开成功与否看这个返回值,成功true,失败false

 * 只有当所有的数据write()完毕(即发送出去)后,关闭的信息才会发送出去。

 */

client->disconnectFromHost();

client->waitForDisconnected();


注意:长连接如果客户端长时间不发数据给服务端的话,那么socket连接会断掉,所以,我们在写的时候需要加上心跳机制,客户端每隔一段时间向服务端发送心跳数据,服务端接收到心跳数据,处理心跳逻辑处理即可。


头文件:#include <QTcpSocket>


相关文章:

QT TcpSocket 服务端-总结【实例】


上一篇 下一篇