欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

boostasync_read_some用法

async_read_some讀到數(shù)據(jù)就會直接回調(diào)設(shè)置的函數(shù),不管數(shù)據(jù)是否已經(jīng)讀完。所以在這里

為化德等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及化德網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、化德網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

會遇到一個非常棘手的問題,如何確定數(shù)據(jù)已經(jīng)讀取完畢?常見的方式是在數(shù)據(jù)的后面添加

標(biāo)志位,例如添加/r/n/r/n作為結(jié)束符,然后停止讀取

async_read_some的基本原理是往IOCP的隊(duì)列里面添加一個異步任務(wù),沒有事情的時(shí)候,CSession::ContinueRead

不應(yīng)該被調(diào)用

class CSession : public boost::enable_shared_from_this<CSession>

{

public:

CSession(boost::asio::io_service &io_service) : m_socket(io_service)

{

memset(m_szRecvBuffer, 0x00, 1024);

m_bStartRecv = false;

}

void Start()

{

static boost::asio::ip::tcp::no_delay option(true);

m_socket.set_option(option);

boost::function0<void> f = boost::bind(&CSession::StartThread, this);

boost::thread thrd(f);

}

/*

啟動線程函數(shù)的根本原因是需要向客戶端推送消息,而且在過程中需要等待接收消息

*/

void StartThread()

{

while (true)

{

/*

使用m_bStartRecv標(biāo)志位主要是為了避免多次設(shè)置回調(diào),當(dāng)正在接收的時(shí)候,不需要設(shè)置回調(diào)

*/

if (!m_bStartRecv)

{

m_bStartRecv = true;

m_socket.async_read_some(boost::asio::buffer(m_szRecvBuffer),

boost::bind(&CSession::ContinueRead, shared_from_this(),

boost::asio::placeholders::error,

boost::asio::placeholders::bytes_transferred));

}

char szAlarm[32] = "alarm";

boost::system::error_code ec;

m_socket.send(boost::asio::buffer(szAlarm), 0, ec);

boost::this_thread::sleep_for(boost::chrono::milliseconds(3000));

if (ec) break;

}

}

private:

/*

在當(dāng)前接收回調(diào)函數(shù)中,我們還繼續(xù)設(shè)置了回調(diào)函數(shù)m_socket.async_read_some,避免僅僅是讀取數(shù)據(jù)包的一部分,

在這里m_szRecvBuffer會一直作為接收的緩沖,而之前接收的數(shù)據(jù)也在里面,并且剩下的數(shù)據(jù),會根據(jù)偏移量,填充到

m_szRecvBuffer的后面,bytes_transferred參數(shù)代表當(dāng)前已經(jīng)接收的數(shù)據(jù)

*/

void ContinueRead(const boost::system::error_code &error, std::size_t bytes_transferred)

{

if (error)return;

m_strMatch = m_strMatch + m_szRecvBuffer;

int index = m_strMatch.find("\r\n\r\n", 0);

if (-1 != index)

{

int ret = m_socket.send(boost::asio::buffer(m_szRecvBuffer));

std::cout << m_szRecvBuffer << std::endl;

m_bStartRecv = false;

return;

}

m_socket.async_read_some(boost::asio::buffer((m_szRecvBuffer)),

boost::bind(&CSession::ContinueRead, shared_from_this(),

boost::asio::placeholders::error,

boost::asio::placeholders::bytes_transferred));

}

private:

boost::asio::ip::tcp::socket m_socket;

char m_szRecvBuffer[1024];

std::string m_strMatch;

bool m_bStartRecv;

};

注意

當(dāng)前的僅僅是一個例子,并沒有考慮到客戶端關(guān)閉連接,服務(wù)器線程及時(shí)退出

文章標(biāo)題:boostasync_read_some用法
標(biāo)題網(wǎng)址:http://www.aaarwkj.com/article14/peijde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、域名注冊、用戶體驗(yàn)、企業(yè)建站、App開發(fā)、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司
中文字幕一区侵犯人妻| 亚洲国产精品第一区第二区| 亚洲精品国产av成人网| 亚洲中文字幕精品视频乱码| 四虎在线观看最新免费| 高清区一区二区在线播放| 欧美日韩国产精品一区二区三区| 女人的天堂啪啪啪av| 色哟哟亚洲精品在线视频| 一区二区三区乱码av| 91午夜福利视频鉴赏| 视频久久这里只有精品| 加勒比av免费在线播放| 亚洲中国av一区二区| 中文字幕乱码日韩一区| 亚洲一区二区三区精品福利| 成人在线观看一区二区三区| 亚洲激情在线观看一区| 一区二区三区在线观看精品| 欧美国产激情一区二区| 国产成人综合在线观看网站| 亚洲熟乱熟女一区二区| 一本久久综合亚洲鲁鲁五月天| 国产日韩一区二区三区电影| 国产有码日产一区在线观看| 九九六热这里只有精品| 一级片高清在线观看国产| 国欧美一区二区三区| 91麻豆粉色视频在线| 韩国黄色理论片一区二区麻豆| 国产高清自拍视频在线一区| 日本黄色免费在线观看网站| 日韩一区二区三区视频在线看| 又黄又湿又刺激中文字幕| 麻豆AV一区二区三区久久| 五月婷婷六月丁香激情视频| 日日夜夜添添精品视频| av毛片在线观看地址| 韩国av一区二区三区| 精品一区无遮挡免费网站| 激情少妇一区二区三区|