使用asio庫封裝的UDP收發資料類

2021-10-14 21:14:32 字數 1747 閱讀 9483

如何使用asio封裝的非同步處理udp資料的服務類? 總結

平時工作中會經常用到udp收發資料,下面分享乙個常用的基於asio介面的簡單封裝;

**如下(示例):

/*usdsocket.h*/

#ifndef _udpsocket_h

#define _udpsocket_h

#include

#include

"boost/asio.hpp"

#include

"boost/thread.hpp"

using namespace std;

using namespace boost:

:asio;

using namespace boost:

:asio:

:ip;

namespace bw_udprecv;}

#endif

/*udpsocket.cpp*/

#include

"udpsocket.h"

namespace bw_udprecv

do_recv()

;}else})

;}crtpudpserver::

crtpudpserver

(const string & ip,

uint32_t port)

catch(.

..) m_run =

true;}

crtpudpserver::

~crtpudpserver()

bool crtpudpserver::

isrun()

void crtpudpserver::

close()

void crtpudpserver::

start

(lpdeal_udp lp)

bool crtpudpserver::

getbindsucceed()

void crtpudpserver::

send_data_to

(void

*buf,

uint32_t len,

const udp::endpoint &to,

const onsent &onsent)

void crtpudpserver::

senddata

(const

char

*data,

int len)})

;}void crtpudpserver::

runthread()

int crtpudpserver::

run()}

;

**如下(示例):

void  callback udpdatacallback

(unsigned

char

*data,

int length, string&ip,

int port)

std:

:shared_ptr:crtpudpserver> udpserver = std:

:make_shared:crtpudpserver>

(string

(ip)

, port);if

(udpserver->

isrun()

== false)

else

boost的網路庫asio

boost在1.35版本之後終於加入了網路庫asio。春節期間終於得閒能夠一窺究竟,同時將boost.asio和知名的ace框架做一下比較。asio的名字突出了非同步i o的能力,從asio的文件中看到它使用了和ace proactor框架中相似的proactor模式。csdn上也有很多也寫了很多關...

asio製作使用ssl通訊的證書

1,生成ca的key openssl genrsa out ca.key 1024 2048 with out password protected openssl genrsa des3 out ca.key 1024 2048 password protected 2,根據ca的key,生成頂級...

C Socket 網路程式設計UDP的封裝

注意的是接收資訊必須繫結埠號 socket 把網路協議用c語言封裝為乙個個函式,放到dll中供其他語言呼叫。udp.h 其中.c 就用到了extern ifndef udp h define udp h ifdef cplusplus extern c endif endifudp.c includ...