大神帮忙!Qt 客户端给服务器发送数据,该如何处理
大神帮忙!!!Qt 客户端给服务器发送数据
客户端代码:
void UI_Main::sendMessage()
{
QByteArray block;
QDataStream out(&block,QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_6);
out<< quint16(0)<<ui->sendLineEdit->text();
out.device()->seek(0);
out<<quint16(block.size() - sizeof(quint16));
tcpSocket->write(block);
ui->sendLabel->setText("send successful");
}
服务其端代码:
void UI_Main::readMessage()
{
QTcpSocket *clientConnection = tcpServer->nextPendingConnection();
QDataStream in(clientConnection);
in.setVersion(QDataStream::Qt_4_6);
if (blockSize==0) {
if(clientConnection->bytesAvailable() < (int)sizeof(quint16)) return;
in >> blockSize;
}
if(clientConnection->bytesAvailable() < blockSize) return;
in >> message;
ui->showLabel->setText(message);
}
为什么服务器端收不到信息?
------解决方案--------------------
你服务端怎么响应的? 用了 定时器不断运行函数还是 用了 readyread();?
------解决方案--------------------
另外,你这 blockSize ==0;;; 是什么? 缓冲区数据吧?估计你是这样 想..
但是你应该这样 QTcpSocket m_tcpskcket;
m_tcpsocket->size() == 0?
哎,你这代码不贴全,谁知道你要干嘛~!
客户端代码:
void UI_Main::sendMessage()
{
QByteArray block;
QDataStream out(&block,QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_6);
out<< quint16(0)<<ui->sendLineEdit->text();
out.device()->seek(0);
out<<quint16(block.size() - sizeof(quint16));
tcpSocket->write(block);
ui->sendLabel->setText("send successful");
}
服务其端代码:
void UI_Main::readMessage()
{
QTcpSocket *clientConnection = tcpServer->nextPendingConnection();
QDataStream in(clientConnection);
in.setVersion(QDataStream::Qt_4_6);
if (blockSize==0) {
if(clientConnection->bytesAvailable() < (int)sizeof(quint16)) return;
in >> blockSize;
}
if(clientConnection->bytesAvailable() < blockSize) return;
in >> message;
ui->showLabel->setText(message);
}
为什么服务器端收不到信息?
------解决方案--------------------
你服务端怎么响应的? 用了 定时器不断运行函数还是 用了 readyread();?
------解决方案--------------------
另外,你这 blockSize ==0;;; 是什么? 缓冲区数据吧?估计你是这样 想..
但是你应该这样 QTcpSocket m_tcpskcket;
m_tcpsocket->size() == 0?
哎,你这代码不贴全,谁知道你要干嘛~!