C++ Qt TCP套接字-写入超过15字节
我的qt套接字有问题 我刚刚创建了一个TCP套接字,我想在服务器上写一条消息。 一切都很好,但当我试图写一条超过15个字符的消息时,它是随机发送的 下面是我创建套接字的方法:C++ Qt TCP套接字-写入超过15字节,c++,qt,sockets,C++,Qt,Sockets,我的qt套接字有问题 我刚刚创建了一个TCP套接字,我想在服务器上写一条消息。 一切都很好,但当我试图写一条超过15个字符的消息时,它是随机发送的 下面是我创建套接字的方法:socket=newqtcsocket(this) 在这里我使用它: bool MainWindow::loginAction(QString usernameNow, QString passwordNow) { QString logingRequestTmp = "LOGIN " + usernameNow +
socket=newqtcsocket(this)代码>
在这里我使用它:
bool MainWindow::loginAction(QString usernameNow, QString passwordNow) {
QString logingRequestTmp = "LOGIN " + usernameNow + " " + passwordNow;
const char* loginRequest= logingRequestTmp.toStdString().c_str();
socket->write(loginRequest);
return true;
}
那么,有没有一种简单的方法可以在socket->write()
说我想写超过15个字节
例如:
用户名=测试,密码=测试
->服务器接收“登录测试”(15个字符)运行良好
但是用户名=test1,密码=test
->服务器接收“���" (16个字符)工作不好
Ps:当我尝试socket->write(“123456789123456789”)
时,它工作了…只有当我传递到socket->write()
aconst char*
时,它才不工作,因为已经创建了15个以上的字符字符串到字节的转换不再只是“假设一切都是7位ASCII”“。最好明确编码,副产品是您可以留在Qt区。放弃std::string()
转换
我会使用socket->write()重载,它接受一个QByteArray
,您可以从原始QString
中获得:
socket->write(logingRequestTmp.toUtf8());
或者,如果您没有使用Utf,那么返回QbyteArray的任何其他QString函数也可以工作:toLatin1()
,例如。字符串到字节的转换不再只是“假设所有内容都是7位ASCII”。关于编码最好是明确的,副产品是您可以留在Qt区。放弃std::string()
转换
我会使用socket->write()重载,它接受一个QByteArray
,您可以从原始QString
中获得:
socket->write(logingRequestTmp.toUtf8());
或者,如果您没有执行Utf,那么返回QbyteArray的任何其他QString函数也可以工作:toLatin1()
,例如。我尝试了QIODevice::write(数据,qstrlen(数据));与文档中类似,但不起作用:socket->write(loginRequest,qstrlen(loginRequest));我尝试了QIODevice::write(数据,qstrlen(数据));与文档中类似,但不起作用:socket->write(loginRequest,qstrlen(loginRequest));谢谢你,彼得!为我工作!!谢谢你,彼得!为我工作!!