1. 程式人生 > >Qt中網路程式設計(C/S架構)Tcp

Qt中網路程式設計(C/S架構)Tcp

A. 伺服器:
1) 建立伺服器物件:QTcpServer server;
2) 繫結+監聽:server中的listen方法 引數(QHostAddress::Any,埠號一般為1024-65535);
3) 當有客戶端連線上伺服器時,會觸發訊號readyRead(),可以利用connect()方法,建立槽函式設定與連線上的客戶端的通訊;
4) 獲取連線server的套接字socket = server->nextPendingConnection()利用套接字與對應的客戶端通訊;注意:客戶端斷開時會觸發disconnected()訊號
5) 套接字收到客戶端的資料時會觸發訊號readyRead(),通過訊號與槽關聯進行關聯(connect());
6) 應用方法:
socketpeerAddress()獲取傳送者地址
write()向傳送者傳送訊息
QVector—>模板庫中的順序表,類似於陣列的使用,可以儲存連續地址的用型別 資料;(本次使用於對連線上的客戶端的Socket的存放,用於指定客戶端通訊)
append()資料的追加方法,可以理解為順序插入
indexOf(int n)找到地址連續的資料中的第n個數據
setEnable()空間的禁用false/啟用true,返回的是一個bool型別

B. 客戶端
1)建立套接字QTcpSocket 物件 socket;
2)連線伺服器socketconnectToHost(主機IP(字串),串列埠號(整型1024-65535));
3)利用socket與伺服器進行通訊,傳送資料:write 接收資料:read/readall

部分關鍵程式碼:
TcpServer:
建構函式:在這裡插入圖片描述

連線處理槽函式:

在這裡插入圖片描述

獲取資料處理槽函式:
在這裡插入圖片描述
斷開處理函式: 在這裡插入圖片描述

TcpClient:
建構函式:
在這裡插入圖片描述

接收資料處理:

在這裡插入圖片描述

執行測試效果:
在這裡插入圖片描述