
Qt TCP 通信 发送接受数据的问题 我只发送了一个用户名字母xxf 密码 123456 5
但是服务器显示为264‘xxf’密码没显示出来这其中的原因搞半天都不知道啊。。。。客户端发送数据的代码voidLoginDialog::sendMessage(){QBy...
但是服务器显示 为 26 4 ‘xxf’ 密码没显示出来 这其中的原因搞半天都不知道啊。。。。
客户端发送数据的代码
void LoginDialog::sendMessage()
{
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_2);
out<<quint16(0)<<ui->usernameEdit->text()<<ui->passwordEdit->text();
out.device()->seek(0);
out<<quint16(block.size() - sizeof(quint16));
tcpSocket->write(block);
ui->statusLabel->setText(tr("发送用户名和密码中,请稍后......."));
}
服务器接收数据的代码void ClientSocket::readClient()
{
QDataStream in(this);
in.setVersion(QDataStream::Qt_5_2);
if(nextBlockSize == 0)
{
if(this->bytesAvailable() < sizeof(quint16))
return;
in>>nextBlockSize;
}
if(this->bytesAvailable() < nextBlockSize)
return;
in>>message;
qDebug()<<nextBlockSize;
qDebug()<<sizeof(message);
qDebug()<<message;
}
message 是QString nextBlockSize是quint16 展开
客户端发送数据的代码
void LoginDialog::sendMessage()
{
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_2);
out<<quint16(0)<<ui->usernameEdit->text()<<ui->passwordEdit->text();
out.device()->seek(0);
out<<quint16(block.size() - sizeof(quint16));
tcpSocket->write(block);
ui->statusLabel->setText(tr("发送用户名和密码中,请稍后......."));
}
服务器接收数据的代码void ClientSocket::readClient()
{
QDataStream in(this);
in.setVersion(QDataStream::Qt_5_2);
if(nextBlockSize == 0)
{
if(this->bytesAvailable() < sizeof(quint16))
return;
in>>nextBlockSize;
}
if(this->bytesAvailable() < nextBlockSize)
return;
in>>message;
qDebug()<<nextBlockSize;
qDebug()<<sizeof(message);
qDebug()<<message;
}
message 是QString nextBlockSize是quint16 展开
1个回答
展开全部
我觉得是这样的 QString默认的是以‘\n’结尾 而QDataStream可能遇到‘\n’就以为结束了 你这样试试
out<<quint16(0)<<ui->usernameEdit->text().append( ui->passwordEdit->text() );
out<<quint16(0)<<ui->usernameEdit->text().append( ui->passwordEdit->text() );
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询