作者neigence ()
站內C_and_CPP
標題[問題] boost asio socket
時間Thu Feb 3 22:44:44 2011
在我的程式中會連結許多的socket,我希望以輪詢的方式來詢問這些socket是否有收到
任何的訊息而不新增任何一條thread。
但是boost的asio下面的read似乎少了一個函式 ,那種可以立即返回又不block的read。
boost::asio::read 以及 socket.read_some 都會block直到指定的buffer讀滿,後來
我找到了下面這樣的寫法...
boost::asio::read(socket , buffer , boost::asio::transfer_at_least(0),error)
這曾經是我唯一的希望,他它卻失敗了。
我本來希望 trasnfer_at_least(0) 是可以讓這行read是以non-block的方式運行,但是
結果是 它永遠讀 0 byte 就立即返回。
目前採用的方式是boost::asio::read_until() 但,讓它如同readLine一樣的方式運行
但實在是不太保險的感覺
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.165.222.196
推 ctrlbreak:google boost async_read_some() 02/03 22:54
→ neigence:那個不是要使用 service.run() 之類的讓他callback? 02/03 22:58
→ neigence:我再仔細google看看 謝謝 02/03 22:59