下面这两个方法在数据传送时有什么区别吗?(用++++++号分开的),请高人指点一下
开始的时候用的是上面的,一切正常,后来我将程序改成多线程的了(thread),上面的客户端就无法接到数据了,只好将代码改成下面的,就OK了,这两种方式有什么不同吗?那个应用更多一些?
服务器:
void Server::sendData(QString data, QTcpSocket &tcpSocket)
{
QDataStream out(tcpSocketClient);
out.setVersion(QDataStream::Qt_4_0);
out << editString;
}
客户端:
void Client::displayData()
{
QString disString;
QDataStream in(tcpSocketClient);
in >> disString;
}
+++++++++++++++++++++++++
好用的:
服务器:
void Server::sendData(QString data, QTcpSocket &tcpSocket)
{
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0);
out << (quint16)0;
out << data;
out.device()->seek(0);
out << (quint16)(block.size() - sizeof(quint16));
tcpSocket.write(block);
tcpSocket.disconnectFromHost();
tcpSocket.waitForDisconnected();
}
客户端:
void Client::readFortune()
{
QDataStream in(tcpSocket);
in.setVersion(QDataStream::Qt_4_0);
if (blockSize == 0) {
if (tcpSocket->bytesAvailable() < (int)sizeof(quint16))
return;
in >> blockSize;
}
if (tcpSocket->bytesAvailable() < blockSize)
return;
QString nextFortune;
in >> nextFortune;
}
[ 此贴被XChinux在2006-10-16 21:25重新编辑 ]