如何使用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...