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

2021-06-16 16:21:53 字數 1055 閱讀 4511

當客戶端連線伺服器時,在客戶端這裡存在兩種操作方式:同步和非同步方式。同步方式,就是客戶端傳送連線之後,一直等伺服器回應,或者超時出錯。非同步方式,就是客戶端傳送連線之後,不等伺服器回應,就可以執行後面的**,當有回應時再通知客戶端連線成功的**執行。這兩種方式上,同步方式比非同步方式簡單,如果使用在要求簡單,操作效能不高上面,是得心應手的,大大降低開發和除錯的難度,提高軟體維護性。但如果使用在要求操作效能比較高的介面程式上,就會常常讓人感覺軟體死掉,沒有響應的感覺,或者使用者想中斷之間的操作,都不行。面對這樣的需求時,一定要使用非同步的方式,才可以滿足現代使用者的需要,提高使用者的滿意度。下面就從同步的方式開始,從最簡單的方式開始,是對事物理解的最佳方法。例子如下:

//#include "stdafx.h"

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

void test(void)

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

boost::asio::ip::tcp::endpoint endpoint = iterator->endpoint();

std:: cout << "host_ip: " << endpoint.address() << " port: " << endpoint.port() << std::endl;

//嘗試連線伺服器。

boost::asio::ip::tcp::socket socket(ioservice);

boost::system::error_code errorcode = boost::asio::error::host_not_found;

socket.close();

socket.connect(*iterator, errorcode); //建立乙個socket同步連線,即阻塞式。

if (errorcode)

std::cout << "connect success" <

在這個例子裡,主要建立乙個socket物件,然後呼叫socket物件的connect函式來進行對伺服器的連線,當連線成功時,錯誤碼errorcode返回非0的錯誤資訊,否則就是0錯誤碼。

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

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

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

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

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

include stdafx.h include include include include bool sendrecvdata boost asio ip tcp socket socket 測試網路服務查詢,連線。void test void 解釋成功之後,顯示解釋後的ip位址和埠。輸出解發...