QT 网络编程遇到的坑 1.0
1、QDataStream 设置版本号
服务端和客户端在读写数据时,QDataStream
要设置相同的版本号。
QDataStream in(m_tcpSocketFromWorker);
in.setVersion(QDataStream::Qt_5_0);
2、QTcpSocket 读取数据的时机
即使QTcpSocket
和QTcpServer
连接上了,QTcpSocket
也不一定有数据,即下面的代码不一定可以读到数据:
connect(socket, SIGNAL(connected()), this, SLOT(handleData());
void handleData()
{
//读取socket内的数据
}
想要读取QTcpSocket
中的数据应该使用另外一个信号readyRead()
,代码如下:
connect(socket, SIGNAL(readyRead()), this, SLOT(handleData());
void handleData()
{
//读取socket内的数据
}