同步写write_some
boost::asio提供了几种同步写的api,write_some可以每次向指定的空间写入固定的字节数,如果写缓冲区满了,就只写一部分,返回写入的字节数。
1 | void wirte_to_socket(asio::ip::tcp::socket& sock) { |
同步写send
write_some使用起来比较麻烦,需要多次调用,asio提供了send函数。send函数会一次性将buffer中的内容发送给对端,如果有部分字节因为发送缓冲区满无法发送,则阻塞等待,直到发送缓冲区可用,则继续发送完成。
1 | int send_data_by_send(){ |
同步写write
类似send方法,asio还提供了一个write函数,可以一次性将所有数据发送给对端,如果发送缓冲区满了则阻塞,直到发送缓冲区可用,将数据发送完成。
1 | int send_data_by_wirte() { |
同步读read_some
同步读和同步写类似,提供了读取指定字节数的接口read_some
1 | std::string read_from_socket(asio::ip::tcp::socket& sock) { |
同步读receive
可以一次性同步接收对方发送的数据
1 | int read_data_by_receive() { |
同步读read
可以一次性同步读取对方发送的数据
1 | int read_data_by_read() { |
读取直到指定字符
我们可以一直读取,直到读取指定字符结束
1 | std::string read_data_by_until(asio::ip::tcp::socket& sock) { |