Boost asio學習筆記 網路程式設計

2021-06-07 20:42:11 字數 2781 閱讀 7227

boost庫中的網路程式設計的例子比較複雜,不太好理解,所以,從網上找了乙個簡單點的例子。**如下:經過修改,可以執行。

伺服器**:

servier.cpp

#

include

#include

bind

.hpp>

#include

#include

#include

<

iostream

>

using boost:

:asio:

:ip:

:tcp;

#define max_len 1024

class clientsession

:public boost:

:enable_shared_from_this

~clientsession(

)tcp:

:socket

&socket()

void start(

)private

:void handle_write(

const boost:

:system

::error_code&

error)

}void handle_read(

const boost:

:system

::error_code&

error

)else

}private

:tcp:

:socket m_socket;

char data_[max_len];}

; typedef boost:

:shared_ptr session_ptr;

public

::asio:

:io_service& ioservice,tcp:

:endpoint& endpoint)

:m_ioservice(ioservice)

,acceptor_(ioservice,endpoint)

)private

:void handle_accept(

const boost:

:system

::error_code&

error

,session_ptr& session)

}private

:boost:

:asio:

:io_service& m_ioservice;

tcp:

:acceptor acceptor_;};

int main(

int argc ,

char

* argv)

客戶端**:

#include

#include

#include

using boost:

:asio::ip

::tcp;

class client

~client(){}

private:

void handle_connect(const boost:

:system:

:error_code& error)

else

}void handle_read(const boost:

:system:

:error_code& error)

else

}void handle_write(const boost:

:system:

:error_code& error)

private:

tcp:

:socket socket;

char getbuffer[1024];};

int main(

int argc,char* argv)

//我覺io_service是乙個基本性的介面,基本上通常用到的類例項都需要通過它來構造

//功能我們可以看似socket

boost:

:asio:

:io_service io_service;

//這個終端就是伺服器

//它的定義就可以看作時sockaddr_in,我們用它來定義ip和port

tcp:

:endpoint endpoint(boost:

:asio::ip

::address_v4:

:from_string(

"192.168.1.119"

/*argv[1]*/

),8100/*argv[2]*/

);//既然socket和sockaddr_in已經定義好了,那麼,就可以connect了

//之所以為了要把連線和資料處理封成乙個類,就是為了方便管理資料,這點在服務端就會有明顯的感覺了

boost:

:shared_ptr client_ptr(new client(io_service,endpoint));

//執行收發資料的函式

io_service.run();

return 0;

}

修改192.168.1.119為127.0.0.1,然後先執行server,再執行client,一切ok.

Boost asio 學習筆記

boost asio 是個一由c 編寫的 跨平台的 使用現代化c 方法的 提供了統一的非同步模型的網路和底層i o 開發庫。個人理解 io service 就是boost asio 基於os的i o引擎,其他的功能是建立在它之上的 io service 擁有所有非同步i o物件 socket dea...

Boost asio 心得筆記

boost asio中有兩點用的不爽 1.asio中的所有物件都引用io service 2.async write還要自己保證內存在completed之前有效 有空要把這兩點搞的更傻瓜一點,實際上在全非同步模式下net io分配兩個執行緒足矣,async搞乙個佇列,completed時候刪掉,還可...

boost asio 網路部分框架探索

asio 網路相關部分類關係 1.get service用於獲取平台的服務 iocp,reactive的支援 2.get implementation操作資源的集合 socket控制代碼,本地位址,遠端位址,協議型別等 繼承自他的所有類,都是通過這兩個介面來呼叫本地服務的。open,assign,b...