QT實現TCP通訊

2021-09-02 15:19:56 字數 1504 閱讀 3111

對於qt下的tcp,如下圖:

一.伺服器端

1.建立套接字

server=new qtcpserver(this);  //監聽套接字

server->listen(qhostaddress::any,8888);//qhostaddress對應網絡卡ip位址

setwindowtitle("伺服器:8888");

2.客戶端發過來連線請求槽函式處理,和客戶端發過來資訊的處理,分別兩個槽函式

//第乙個槽函式--只要有客戶端連線伺服器,伺服器就會產生newconection的訊號,然後對這個訊號處理

//獲取這個客戶端的套接字,然後獲取其ip和埠,

//第二個槽函式:只要客戶端發過來訊息就會觸發readyread訊號,然後讀取資訊內容並顯示

connect(server,&qtcpserver::newconnection,

[=]());}

);

3.傳送資訊

void widget::on_sendbutton_clicked() //用了乙個button來發訊息

qdebug()<

//獲取編輯區內容

qstring str2=ui->writeedit->toplaintext();

qdebug()

qint64 p1=st1->write("111");

qdebug()二.客戶端

1.怎麼知道連線成功和獲取訊息

//也是兩個槽函式

//第乙個用來傳送連線請求

//第二個用來獲取訊息(連線成功socket套接字都會被對方的connected觸發)

clientwidget::clientwidget(qwidget *parent) :

qwidget(parent),

ui(new ui::clientwidget)

);connect(st2,&qtcpsocket::readyread,

[=]());}

2.連線

void clientwidget::on_connectbutton_clicked()

3.傳送訊息(差不多的**)

void clientwidget::on_sendbutton_clicked()

最後,這只是單個伺服器單個客戶端,然而對於乙個伺服器多個客戶端的情況下,也是可以的。不能多個客戶端在於:

st1=server->nextpendingconnection();//只接受了乙個通訊套接字,每當有新連線就會斷開上乙個
處理的方法可以把所有的連線放在list裡邊,然後再處理。

詳情見:

QT實現TCP通訊

目錄前言 一 tcp服務端的實現流程 二 tcp客戶端端的實現流程 總結 tcp通訊的實現需要包含2個部分,tcp服務端和tcp客戶端。首先在工程檔案中新增network qt core gui network.h需要引入標頭檔案 include include1.建立qtcpserver的物件用作...

Qt 通訊協議 tcp網路程式設計實現

qt tcp伺服器端 tcp.h include include include class tcp public qthread 監聽連線客戶端,接收客戶端傳送的資料資訊,處理,返回 include include include tcp tcp qobject parent qthread pa...

QT5中實現TCP協議簡單通訊

qt版本 qt5.11 其他qt5版本均支援。1 tcp伺服器建立 首先建立tcpserver工程,涉及到 tcpserver tcpclientsocket server三個檔案和main主檔案,在tcpserver.pro中新增如下語句 qt network1 a 標頭檔案 tcpserver....