【yasio】轻量级跨平台socket库v3.33.0正式发布

yasio 是一个专注于移动平台和各种客户端的socket库

经历近3个多月的研发和测试,终于发布了v3.33.0的正式版本,此版本带来了大量的bug修复和功能增强,详细更新内容如下:
  • 重构UDP Transport,和TCP一样使用发送队列,UDP客户端默认不使用connect绑定四元组,同时提供选项YOPT_T_CONNECT和YOPT_T_DISCONNECT来修改绑定行为
  • 增加io_service::write_to接口用户发送到指定地址,可作用于已绑定或未绑定的UDP Transport
  • 移除信道掩码 : YCM_MCAST_CLIENT, YCM_MCAST_SERVER
  • 移除信道标记: YCF_MCAST_LOOPBACK
  • 添加选项: YOPT_C_ENABLE_MCAST, YOPT_C_DISABLE_MCAST用于组播支持
  • 修改定时器回调原型为 []()->bool {},用户可以返回false来通知service继续调度定时器
  • 添加highp_timer::async_wait_once接口来注册一次性定时器回调
  • 修改 YCM_XXX_[CLIENT/SERVER]为YCK_XXX_[CLIENT/SERVER]以明确io_service::open时传递的应该是channle类型,而非掩码
  • 增加API: yasio::xhighp_clock获取纳秒级时间戳
  • 修复xxsocket API send_n和recv_n未处理EINTR信号问题
  • 调整obstream/obstream API, 默认write_v/read_v使用7Bit Encoded Int编码字符串的长度域
  • 重命名io_service的start_service/stop_service为start/stop
  • 修复开启c-ares非阻塞域名解析支持时超时行为
  • 增强c-ares清理机制
  • 增强cxx17::string_view兼容性,可用于c++11的unordered_map/unordered_set容器
  • 使用shared_ptr + shared_mutex来增强io_service在未开启c-ares情况下的析构行为的稳定性
  • 修复DNS缓存机制无效问题
  • 简化启用c-ares时dns服务器列表初始化,在android平台静态链接只需要在JNI_OnLoad调用yasio__jni_onload, 动态链接则无需任何操作
  • 修复yasio::_strfmt字符串格式化在某些低版本编译器,某些特殊字符输出情况下可能crash的问题
  • 增强io_service内部当检测到发送缓冲区已满时驱动行为,不再固定sleep,而是注册可写事件由select驱动
  • 优化UDP Transport内部对错误的关闭行为,默认不会因为发送错误而关闭Transport,而是由用户在发送回调中根据错误码自行决定是否关闭Transport.
  • 修改发送完成回调原型为 std::function<void(int ec, size_t bytes_transferred)>
  • 实现cxx17::string_view在c++11标准编译器下的字符串字面值操作符重载, 例如 “abcd”_sv;
  • 修复访问某些https服务器SSL握手失败问题
  • 修复在只支持c++11标准编译器下,使用kaguya lua绑定库,导致io_service对象不随着lua gc析构问题
  • 增加io_service::init_globals(const print_fn_t&)接口来支持重定向初始化日志到自定义文件(例如U3D和UE4游戏引擎的编辑器日志输出窗口)
  • 增强编译器支持,c++14,17,20均可通过编译
  • 优化Lua绑定库自动选择的最低标准,编译器支持c++14或以上,均选择 sol2 作为lua 绑定库
  • 在发送中断器socket_select_interrupter发生错误时,重建之
  • 更新kcp到v1.7版本,先前版本在ARM处理器下可能发生SIGBUS崩溃
  • 简化io_service API, 去除reopen, 使用open替代,open自带重连或重新打开信道行为
  • 修复当af=0时yasio::inet::ip::endpoint::ip崩溃问题
  • 修改io_service::write kcp的返回值,保持和其他类型Transport一致
  • 修复KCP server不解码KCP协议包问题
  • 增加xxsocket::disconnect以支持解除UDP socket和远端的4元组绑定关系
  • 重命名io_service选项 YOPT_I_SOCKOPT 为 YOPT_B_SOCKOPT
  • 其他代码质量和稳定性优化

猜你喜欢

转载自blog.csdn.net/xyzzf/article/details/106360555
今日推荐