[英]Qt TCP socket - Write more that 15bytes
我對 qt sockets 有疑問...
我剛剛創建了一個 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 個字節。?
示例:
使用用戶名 = 測試和密碼 = 測試
-> 服務器收到“LOGIN test test”(15 個字符)運行良好!
但是使用用戶名 = test1 和密碼 = test
-> 服務器收到“���”(16 個字符)不能正常工作...
Ps:當我嘗試socket->write("123456789123456789")
它工作...只有當我傳遞給socket->write()
一個const char*
已經用 15+ 個字符創建時才工作
字符串到字節的轉換不再只是“假設一切都是 7 位 ASCII”。 最好明確編碼,副產品是您可以留在 Qt 領域。 放棄std::string()
轉換。
我將使用帶有QByteArray
的 socket->write() 重載,您可以從原始QString
獲得它:
socket->write(logingRequestTmp.toUtf8());
或者,如果您不使用 Utf,則返回 QByteArrays 的任何其他 QString 函數也可以工作:例如toLatin1()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.