我的原意是这样的:客户端请求连接,服务器发送"I'm ready",客户端收到后就发送数据,服务器收到后发送处理的结果。可是现在遇到的问题是客户端收到"I'm ready"后发送的数据服务器端显示没收到,不知是什么问题,请各位不吝赐教。我的代码如下:
//server.cpp
connect(tcpServer,SIGNAL(newConnection()),this,SLOT(sendReadyMessage()));
void MainWindow::sendReadyMessage()
{
QByteArray block;
QDataStream out(&block,QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0);
out<<tr("I'm ready");
readWriteSocket = tcpServer->nextPendingConnection();
readWriteSocket->write(block);//到这里没问题,客户端收到了"I'm ready"
connect(readWriteSocket,SIGNAL(readyRead()),this,SLOT(readDomainNameAndSendIp()));
connect(readWriteSocket, SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(displayError(QAbstractSocket::SocketError)));
connect(readWriteSocket,SIGNAL(disconnected()),readWriteSocket,SLOT(deleteLater()));
}
void MainWindow::readDomainNameAndSendIp()
{
QByteArray datagram = readWriteSocket->readAll();
qDebug()<<"datagram="<<datagram.data();//这里读出来的内容是空
}
//client.cpp
connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(readTcpMessage()));
void MainWindow::readTcpMessage()
{
QDataStream in(tcpSocket);
in.setVersion(QDataStream::Qt_4_0);
QString messageReceived;
in>>messageReceived;
if(messageReceived == "I'm ready")
{
sendDomainNameAndWait();
}
else//如果不是"I'm ready,那就是服务器发送的处理结果"
ui->dnsResult->setText(messageReceived);
}