Boost.Asio基础(二)

本文详细介绍了Boost.Asio库中的Socket类,包括ip::tcp,ip::udp和ip::icmp,以及它们的同步错误处理、成员函数、连接相关操作和读写功能。讲解了如何进行同步和异步的连接、读写操作,以及相关函数的使用方法和注意事项。
摘要由CSDN通过智能技术生成

套接字 Sockets

Boost.Asio有三种类型的Socket类:ip::tcp,ip::udp和ip::icmp,三者都是可扩展的。你可以创建自己的Socket类,虽然做起来稍微复杂了点。假如你真的要这么做,可以参考boost/asio/ip/tcp.hpp,boost/asio/ip/udp.hpp和boost/asio/ip/icmp.hpp。它们都是很小的类,在内部使用typedef关键字。
你可以把ip::tcp,ip::udp和ip::icmp类,作为一个占位符;可以用下面的形式来访问类的和类的方法:

  • ip::tcp::socket, ip::tcp::acceptor, ip::tcp::endpoint, ip::tcp::resolver, ip::tcp::iostream
  • ip::udp::socket, ip::udp::endpoint, ip::udp::resolver
  • ip::icmp::socket, ip::icmp::endpoint, ip::icmp::resolver

相应的socket类创建一个对应的套接字。在io_service实例构造的时候,你需要传入这个socket:

io_service service;
ip::udp::socket sock(service);
sock.set_option(ip::udp::socket::reuse_address(true));

每一个socket的名字都由typedef而来:

  • ip::tcp::socket = basic_stream_socket
  • ip::udp::socket = basic_stream_socket
  • ip::icmp::socket = basic_stream_socket

同步错误代码(Synchronous error codes)

所有的同步函数都有例外情况,它们会抛出异常或者返回一个错误代码,例如下列代码:

sync_func(arg1, arg2 ... argN); //抛出异常
boost::system::error_code ec;
sync_func(arg1 arg2, ... , argN, ec); //返回错误代码

在后面,会遇到很多同步函数。为了保持简洁,后面会忽略返回错误代码的例外情况。

Socket成员函数

这些函数被分为几个组。并不是每个种类的socket都能访问所有这些成员函数。本节的最后,会有一张表列出哪些成员是隶属于何种socket类。
需要注意的是,所有的异步函数都是立即返回的,而同步版本的函数,只在操作完成之后才返回。

连接相关的类

有些函数用于连接或者绑定socket,断开连接,查询连接是否有效:

  • assign(protocol, socket):它给socket实例赋予原始套接字(
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值