gpt4 book ai didi

c++ - Qt TCP 套接字 - 写入超过 15 个字节

转载 作者:行者123 更新时间:2023-11-30 02:14:21 26 4
gpt4 key购买 nike

我有一个关于 qt 套接字的问题...

我刚刚创建了一个 TCP 套接字,我想在服务器上写一条消息。一切正常,但是当我尝试写一条超过 15 个字符的消息时,它发送的是随机的东西......

这是我创建套接字的方法:socket = new QTcpSocket(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 个字节。?

例子:

使用用户名 = test 和密码 = test

-> 服务器收到“LOGIN 测试测试”(15 个字符)运行良好!

但是使用用户名=test1 和密码=test

-> 服务器收到“����”(16 个字符)无法正常工作......

Ps :当我尝试 socket->write("123456789123456789") 时,它起作用了……只有当我传递给 socket->write() 时才不起作用> 已经创建了超过 15 个字符的 const char*

最佳答案

字符串到字节的转换不再只是“假设一切都是 7 位 ASCII”。最好明确编码,副产品是您可以留在 Qt 领域。放弃 std::string() 转换。

我将使用带有 QByteArray 的 socket->write() 重载,您可以从原始 QString 中获取它:

socket->write(logingRequestTmp.toUtf8());

或者如果您不使用 Utf,则返回 QByteArrays 的任何其他 QString 函数也可以工作:例如 toLatin1()

关于c++ - Qt TCP 套接字 - 写入超过 15 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58188349/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com