xxsocket

xxsocket是跨平台socket工具类, 屏蔽了各操作系统平台差异,提供统一接口,是yasio网络库的起源, 支持C++11 move语义。

命名空间

namespace yasio::inet

成员

公共构造函数:

函数名

函数说明

xxsocket::xxsocket

构造xxsocket对象

公共方法:

函数名

函数说明

xxsocket::xpconnect

发起TCP连接,支持本地ipv4/ipv6检测

xxsocket::xpconnect_n

发起TCP连接,支持本地ipv4/ipv6检测, 支持超时

xxsocket::pconnect

发起TCP连接

xxsocket::pconnect_n

发起TCP连接, 支持超时

xxsocket::pserv

启动TCP服务器

io_service::swap

交换socket文件描述符

xxsocket::open

打开套接字

xxsocket::reopen

重新打开套接字

xxsocket::is_open

判断套接字是否已打开

xxsocket::native_handle

返回内部xxsocket管理的socket文件描述符

xxsocket::detach

释放对套接字的所有权

xxsocket::set_nonblocking

设置socket是否为非阻塞状态

xxsocket::test_nonblocking

检测socket是否是非阻塞状态(不可靠的)

xxsocket::bind

绑定套接字,指定地址

xxsocket::bind_any

绑定套接字, 任意地址

xxsocket::listen

启动TCP服务监听

xxsocket::accept

接受一个客户端连接,必须listen之后才可以调用此接口

xxsocket::accept_n

接受一个客户端连接,必须listen之后才可以调用此接口, 支持超时

xxsocket::connect

发起TCP连接, 和pconnect,xpconnect不同的是,套接字必须是已打开状态

xxsocket::connect_n

和connect相同,支持超时

xxsocket::send

发送数据

xxsocket::send_n

发送数据,支持超时

xxsocket::recv

从内核读取对端发来的数据

xxsocket:recv_n

从内核读取对端发来的数据,支持超时

xxsocket:sendto

发送UDP包到指定地址

xxsocket:recvfrom

从内核读取发送到已绑定本地端口的UDP套接字数据

xxsocket::handle_write_ready

等待socket可写,只有当发送缓冲区满了的时候,才会阻塞

xxsocket::handle_read_ready

等待socket可读唤醒

xxsocket::local_endpoint

获取本地地址,socket必须已经成功connect,才能正确返回

xxsocket::peer_endpoint

获取对端地址,socket必须已经成功connect,才能正确返回

xxsocket::set_keepalive

设置TCP协议心跳参数

xxsocket::reuse_address

设置socket是否重用地址/端口

xxsocket::set_optval

设置socket选项,函数模板封装setsockopt,会自动计算大小

xxsocket::get_optval

获取socket选项,函数模板封装getsockopt,会自动计算大小

xxsocket::select

封装bsd socket.select, 使用略有差异

xxsocket::alive

判断socket是否处于正常状态

xxsocket::shutdown

封装bsd socket.shutdown

xxsocket::close

关闭套接字,回收套接字资源

xxsocket::get_last_errno

获取最近socket错误码

xxsocket::set_last_errno

设置最近socket错误码

xxsocket::strerror

获取socket错误码的文本描述信息

xxsocket::gai_strerror

获取getaddrinfo错误码的文本描述信息

xxsocket::resolve

静态方法,域名解析, 解析所有地址

xxsocket::resolve_v4

静态方法,域名解析, 解析ipv4地址

xxsocket::resolve_v6

静态方法,域名解析, 解析ipv6地址

xxsocket::resolve_v4to6

静态方法,域名解析, 只解析ipv4地址,并根据V4MAPPED规则转换为ipv6地址

xxsocket::resolve_tov6

静态方法,域名解析, 解析所有地址,但ipv4地址会根据V4MAPPED规则转换为ipv6地址