boost庫在工作(29)網路客戶端之四

2021-06-16 16:23:05 字數 1133 閱讀 4459

//#include "stdafx.h"

#include #include #include #include bool sendrecvdata(boost::asio::ip::tcp::socket& socket);

//測試網路服務查詢,連線。

void test(void)

//解釋成功之後, 顯示解釋後的ip位址和埠。

//輸出解發布來的資料。

在這個例子裡,使用乙個boost::asio::streambuf物件來構造傳送資料報,然後通過boost::asio::write函式把資料通過網路socket物件傳送出去,最後為了接收伺服器回應的資料,構造boost::asio::streambuf物件來儲存資料,通過boost::asio::read_until函式來等伺服器到來,直到條件結束。收到資料之後,就可以通過std::istream物件來解釋回應的資料,然後把相應的資料輸出到控制端視窗。

雖然這個例子短小,但還是把接收和傳送的**分成乙個函式sendrecvdata,這樣更加容易理解和維護。在軟體開發裡,每個函式不超過螢幕一屏,就是最理想的函式,否則維護成本增加很多,每當開發人員檢視**,再滾屏時,思想就給滾掉了。並且這樣可以把bug減少到最低程度,大大地提高**質量,提高軟體開發效率。

boost庫在工作(26)網路客戶端之一

說到網路,就立即回想到1997年那時,上網只是為了收發一下email,沒有別的事情可做,並且大多數還是連線成區域性網的情況。在區域性網時,在乙個計算機房裡,最多只有10多台電腦聯機,這樣的區域性網只能幹一件事情,就是玩多人網路遊戲,這個多人只支援4個人一起玩。隨著時間推進,到1999年時就可以上網看...

boost庫在工作(27)網路客戶端之二

由於一台伺服器上可能存在多個服務,而每個服務使用了不同的埠,因而對一台伺服器的查詢,就可能返回多個服務的埠。為了表示多個服務,需要使用乙個列表來表達多個服務存在。而訪問乙個列表,通常使用迭代設計模式來訪問整個列表。因此就會使用下面的 來進行網域名稱解釋 include stdafx.h includ...

boost庫在工作(28)網路客戶端之三

當客戶端連線伺服器時,在客戶端這裡存在兩種操作方式 同步和非同步方式。同步方式,就是客戶端傳送連線之後,一直等伺服器回應,或者超時出錯。非同步方式,就是客戶端傳送連線之後,不等伺服器回應,就可以執行後面的 當有回應時再通知客戶端連線成功的 執行。這兩種方式上,同步方式比非同步方式簡單,如果使用在要求...