|
| enum class | type : int32_t {
STREAM = SOCK_STREAM
, DGRAM = SOCK_DGRAM
, RAW = SOCK_RAW
, RDM = SOCK_RDM
,
SEQPACKET = SOCK_SEQPACKET
, CLOEXEC = SOCK_CLOEXEC
, NONBLOCK = SOCK_NONBLOCK
, DCCP = SOCK_DCCP
} |
| | socket 类型枚举 更多...
|
| enum class | protocol : int32_t {
AUTO = 0
, ICMP = IPPROTO_ICMP
, TCP = IPPROTO_TCP
, UDP = IPPROTO_UDP
,
SCTP = IPPROTO_SCTP
, RAW = IPPROTO_RAW
, ESP = IPPROTO_ESP
, AH = IPPROTO_AH
,
DCCP = IPPROTO_DCCP
, IP = ETH_P_IP
, ARP = ETH_P_ARP
, IPV6 = ETH_P_IPV6
,
LAT = ETH_P_LAT
, VLAN = ETH_P_8021Q
, LLDP = ETH_P_LLDP
, MPLS = ETH_P_MPLS_UC
} |
| | socket 协议枚举 更多...
|
|
using | native_handle_type |
| | 平台原生句柄类型
|
|
using | family = ip_address::family |
| | 网络地址族类型
|
|
|
| socket_base () |
| | 默认构造函数
|
| | socket_base (const native_handle_type fd) noexcept |
| | 从原生句柄构造
|
| | socket_base (socket_base &&other) noexcept |
| | 移动构造函数
|
| socket_base & | operator= (socket_base &&other) noexcept |
| | 移动赋值运算符
|
|
virtual | ~socket_base () |
| | 析构函数
|
| native_handle_type | native_handle () const noexcept |
| | 获取原生句柄
|
| bool | is_open () const noexcept |
| | 检查socket是否已打开
|
| | operator bool () const noexcept |
| | 布尔转换运算符
|
| void | open (family f, type t=type::STREAM, protocol p=protocol::AUTO) |
| | 打开socket
|
| virtual bool | close () noexcept |
| | 关闭socket
|
| bool | try_open (family f, type t=type::STREAM, protocol p=protocol::AUTO) noexcept |
| | 尝试打开socket
|
| bool | is_nonblocking () const noexcept |
| | 查询是否为非阻塞模式
|
| bool | set_nonblocking (bool enable) noexcept |
| | 设置非阻塞模式
|
| bool | shutdown_send () noexcept |
| | 关闭发送方向
|
| bool | shutdown_receive () noexcept |
| | 关闭接收方向
|
| bool | shutdown_both () noexcept |
| | 关闭双向通信
|
| bool | set_option (int level, int optname, const void *value, ::socklen_t len) noexcept |
| | 设置socket选项
|
| bool | get_option (int level, int optname, void *optval, ::socklen_t *optlen) const noexcept |
| | 获取socket选项
|
| bool | get_reuse_address () const noexcept |
| | 查询地址重用
|
| bool | set_reuse_address (bool enable=true) noexcept |
| | 设置地址重用
|
| bool | get_reuse_port () const noexcept |
| | 查询端口重用
|
| bool | set_reuse_port (bool enable=true) noexcept |
| | 设置端口重用
|
| bool | get_keep_alive () const noexcept |
| | 查询TCP KeepAlive
|
| bool | set_keep_alive (bool enable=true) noexcept |
| | 设置TCP KeepAlive
|
| bool | get_tcp_nodelay () const noexcept |
| | 查询Nagle算法
|
| bool | set_tcp_nodelay (bool enable=true) noexcept |
| | 设置禁用Nagle算法
|
| int | get_receive_buffer_size () const noexcept |
| | 查询接收缓冲区大小
|
| bool | set_receive_buffer_size (int size) noexcept |
| | 设置接收缓冲区大小
|
| int | get_send_buffer_size () const noexcept |
| | 查询发送缓冲区大小
|
| bool | set_send_buffer_size (int size) noexcept |
| | 设置发送缓冲区大小
|
| optional< milliseconds > | get_send_timeout () const noexcept |
| | 获取发送超时时间
|
| bool | set_send_timeout (milliseconds timeout) noexcept |
| | 设置发送超时时间
|
| optional< milliseconds > | get_receive_timeout () const noexcept |
| | 获取接收超时时间
|
| bool | set_receive_timeout (milliseconds timeout) noexcept |
| | 设置接收超时时间
|
| optional< ip_address > | local_endpoint () const |
| | 获取本地端点地址
|
| optional< ip_address > | remote_endpoint () const |
| | 获取远程端点地址
|
| void | bind (const ip_address &endpoint) |
| | 绑定socket到本地地址
|
| void | listen (int backlog) |
| | 开始监听连接(TCP)
|
| native_handle_type | release () noexcept |
| | 释放socket所有权
|
Socket基础类
提供跨平台的socket基础操作,是所有socket类的基类。 支持移动语义,不支持拷贝。
主要功能:
- Socket创建和关闭
- 阻塞/非阻塞模式设置
- Socket选项配置(地址重用、端口重用、TCP_NODELAY、KeepAlive等)
- 收发缓冲区大小设置
- 超时设置
- 本地/远程端点查询
- 绑定和监听
- 移动语义支持
在文件 socket_base.hpp 第 81 行定义.