LIB-ZC, 一个跨平台(Linux)平台通用C/C++扩展库, 网络socket

LIB-ZC, 一个跨平台(Linux)平台通用C/C++扩展库, 网络 socket

  • 跨平台
  • 命名空间 zcc

方法

网络地址, 例子

cpp 复制代码
192.168.1.1:25
/somepath/someppp/123_domain_socket_path
0:25;127.0.0.1:46;./somepath/123;/home/xxx/111;0:8899

常量

socket 类型

cpp 复制代码
static const char var_tcp_listen_type_inet = 'i';
static const char var_tcp_listen_type_unix = 'u';
static const char var_tcp_listen_type_fifo = 'f';

监听相关

cpp 复制代码
int unix_listen(char *addr, int backlog = 128); // Unix域socket监听
int inet_listen(const char *sip, int port, int backlog = 128); // IP socket监听
int fifo_listen(const char *path); // FIFO监听
int netpath_listen(const char *netpath, int backlog = 128, int *type = nullptr); // 通用路径监听

连接相关

cpp 复制代码
int unix_connect(const char *addr, int timeout); // Unix域socket连接
int inet_connect(const char *dip, int port, int timeout); // IP socket连接
int host_connect(const char *host, int port, int timeout); // 主机名连接
int netpath_connect(const char *netpath, int timeout); // 通用路径连接

接收连接

cpp 复制代码
int unix_accept(int fd); // Unix域socket接收连接
int inet_accept(int fd); // IP socket接收连接
int socket_accept(int fd, int type); // 通用接收连接

关闭连接

cpp 复制代码
// 关闭 fd, 兼容 windows closesocket
int close_socket(int fd);

地址信息

cpp 复制代码
int get_peername(int sockfd, int *host, int *port); // 获取对端地址和端口

带超时连接(connect)的实现原理

  • 假设 socket_fd 为connect用的 socket
  • 设置 socket_fd 非阻塞, 继续
  • 执行 connnect
    • 返回 -1 且 errno != EINPROGRESS: 失败, 流程终止
    • 否则: 继续
  • 超时等待 socket_fd 读写状态
    • 可读不可写: 失败, 流程终止
    • 可写不可读: 成功, 流程终止
    • 可读又可写: 再次执行 connect:
      • 返回 -1 且 errno==EISCONN: 成功, 流程终止
      • 否则: 失败, 流程终止
相关推荐
初中就开始混世的大魔王7 分钟前
6 Fast DDS-传输层
开发语言·c++·中间件·信息与通信
Jurio.25 分钟前
tmux 安装与使用教程:SSH 断开后任务继续运行,终端分屏与多窗口管理
linux·经验分享·ssh·tmux
啊森要自信27 分钟前
【GUI自动化测试】控件、鼠标键盘操作与多场景自动化
c语言·开发语言·python·adb·ipython
YJlio27 分钟前
《Sysinternals实战指南》16.5 Ctrl2Cap 工具详解:把 Caps Lock 变成 Ctrl 的键盘改造与回退方法
linux·运维·服务器·网络·python·学习·计算机外设
l'm coming38 分钟前
[linux]内核启动加载驱动文件的流程
linux·arm开发·驱动开发·嵌入式
一拳一个娘娘腔1 小时前
CVE-2026-31431 — “Copy Fail“ 深度拆解
linux·安全
麦麦麦当劳大王1 小时前
Linux SSH服务端配置指南
linux·运维·服务器·ssh
Yiyaoshujuku2 小时前
化学谱图数据API接口,数据字段一览!
linux·服务器·前端
__Witheart__2 小时前
make menuconfig 使用全流程
linux·ubuntu·rockchip
2601_951645782 小时前
Linux 编程语言全解析:C、C++、Python、Go、Rust 谁更强?
linux·python·go·c·编程语言