QT TCP通訊無法收到資料的解決方案

2021-08-04 14:36:35 字數 1449 閱讀 3603

好多部落格中,有乙個很大的誤區,就是傳送完資料之後,立即呼叫socket.disconnectfromhost(),造成資料無法正常的被對方接收到,因此,應當等待關於這個socket的所有操作完成之後,才能呼叫socket.disconnectfromhost()函式。**

main.cpp

#include

"mainwidget.h"

#include

intmain

(int argc,

char

*argv)

mainwidget.h

#ifndef mainwidget_h

#define mainwidget_h

#include

#include

#include

#include

#include

#include

//#define mdebug(x) (qdebug() << "debug " + qstring(__date__).replace(" ",".") + " " + qstring(__time__) + " " + qstring(__file__) + " " + qstring(__function__) + " " + qstring::number(__line__) + ">>" + " " + x)

namespace ui

class mainwidget : public qwidget

;#endif

// mainwidget_h

mainwidget.cpp

#include

"mainwidget.h"

#include

"ui_mainwidget.h"

mainwidget:

:mainwidget

(qwidget *parent)

:qwidget

(parent),ui

(new ui:

:mainwidget)

code = qtextcodec:

:codecforlocale()

; ui->lineedit->

settext

("127.0.0.1");

}mainwidget::~

mainwidget()

void mainwidget:

:newconnection()

}void mainwidget:

:on_pushbutton_clicked()

}void mainwidget:

:readyread()

void mainwidget:

:readyread2()

Qt TCP資料通訊的中文亂碼問題

1 問題描述 寫了乙個簡單的tcp聊天軟體,在qtextedit上顯示文字,但是出現了通訊中文亂碼的問題。2 問題原因 並非是資料通訊問題,而是資料型別沒有及時轉換。3 具體 片段 1 傳送資料 void clientwidget on send 2 接受並顯示資料 void serverwidge...

解決qt tcp通訊傳輸中文亂碼的問題

主要是轉碼的問題,兩個通訊端對字元的解碼和編碼方式不同,只需要找到相同的轉碼即可。最初用的是的qstring tolatin1 傳輸之後顯示為問號,然後用了的qstring tolocal8bit 傳輸之後為亂碼,最後用了的qstring toutf8 發現成功傳輸。首先,我在傳送端做了一些簡單的輸...

QT TCP 讀資料的幾種方式

1 qtcpsocket 繼承於qabstractsocket繼承於qiodevice 2 qtcpsocket 提供的幾種接收和傳送資料方法 3 例子1 write const qbytearray qint64 cpp 用於暫存要傳送的資料 qbytearray block 使用資料流寫入資料 ...