![](/img/trans.png)
[英]Check for data on boost::asio socket before read? Or should I use async_read()?
[英]Check if boost::asio buffer data is present before read()
我正在嘗試將我使用 Unix sockets 編寫的軟件移植到使用 TCP ZFFE33A3F6E35505FABA.io 的版本:boost:7FDas.io 該程序旨在在 Linux 機器上運行。
在代碼的早期版本中(使用 Unix 套接字),我使用了一個簡單的檢查來查看套接字緩沖區中是否有新數據,然后繼續讀取可預測的結構化數據:
ioctl(s_c, FIONREAD, &socketstatus);
while (socketstatus > 0)
{// do receive stuff
ioctl(s_c, FIONREAD, &socketstatus);}
有沒有辦法用 boost::asio 做類似的事情? 或者一些更好的選擇?
提前謝謝你 CB
使用bytes_readable ,這實現了你想要的。
實現 FIONREAD IO 控制命令。
boost::asio::ip::tcp::socket socket(io_service);
...
boost::asio::socket_base::bytes_readable command(true);
socket.io_control(command);
std::size_t bytes_readable = command.get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.