從零開發B S機架應用程式(四) TCP

2021-08-10 19:26:40 字數 1694 閱讀 9320

傳輸控制協議。與udp不同,他是面向連線和資料流的可靠傳輸協議。也就是,他能夠使一台計算機上的資料無差錯的發往網路的其他計算機,所以當藥傳輸大量資料時,我們選用tcp協議。

qtcpserver的基本操作:

1、呼叫listen監聽埠。

2、連線訊號newconnection,在槽函式裡呼叫nextpendingconnection獲取連線進來的socket。

qtcpsocket的基本能操作:

1、呼叫connecttohost連線伺服器。

2、呼叫waitforconnected判斷是否連線成功。

3、連線訊號readyread槽函式,非同步讀取資料。

4、呼叫waitforreadyread,阻塞讀取資料。

我們在伺服器端進行埠的監聽,一旦發現客戶端的連線請求,就會發出newconnection()訊號。

而在客戶端,一點有資料到來就會發出readyread()訊號

#include "tcp_client.h"

#include "ui_tcp_client.h"

#include

#include

#include

#include

tcp_client::tcp_client(qwidget *parent) :

qwidget(parent),

ui(new ui::tcp_client)

tcp_client::~tcp_client()

void tcp_client::on_pushbutton_clicked()

}ui->messagelabel->settext(s);

}void tcp_client::on_pushbutton_2_clicked()

void tcp_client::readmessage()

在伺服器端的程式中,我們監聽本地主機的乙個埠,這裡用8080

#include "tcp_srver.h"

#include "ui_tcp_srver.h"

#include

#include

tcp_srver::tcp_srver(qwidget *parent) :

qwidget(parent),

ui(new ui::tcp_srver)

tcp_srver::~tcp_srver()

//初始化qtcpserver,監聽本機指定的埠

void tcp_srver::init()

else

connect(ui->pushbutton, signal(clicked()), this, slot(sendmessage()));

}//處理客戶端連線

void tcp_srver::acceptconnection()

void tcp_srver::readclient()

下面分別使用網路除錯助手和自己編寫的客戶端與服務端收發的截圖

從零開發B S機架應用程式(七)巨集定義的使用

看下面的一段 enum audiomasteropcodes 在 或c 語言源程式中允許用乙個識別符號來表示乙個字串,稱為 巨集 被定義為 巨集 的識別符號稱為 巨集名 在編譯預處理時,對程式中所有出現的 巨集名 都用巨集定義中的字串去代換,這稱為 巨集代換 或 巨集展開 巨集定義是由源程式中的巨集...

從零開發B S機架應用程式(十)網路通訊上

簡述 在我們使用客戶端的時候,客戶端是如何通訊的呢?下面就簡單的說說看 通訊流程 下面是流程圖 通訊的基礎是tcp ip模型 伺服器搭建 伺服器搭建流程 網路通訊的基礎知識 tcp ip 四層協議 tcp報文段首部格式 此部分是傳輸層資料封裝,封裝後給網路層,ip資料報 序號 seq序號,佔32位,...

應用程式開發步驟

c 是一種編譯語言,c 源程式需要經過編譯 連線,生成可執行檔案後方可執行。使用c 開發乙個應用程式大致要經過以下步驟 1 首先要根據實際問題確定程式設計的思路,包括選用適當的數學模型。這方面的內容其實也是各應用學科的主要研究領域之一。2 根據前述思路或數學模型編寫程式。除了非常簡單的問題可以直接寫...