当前位置: 首页 > 软件库 > 程序开发 > 网络工具包 >

yasio

轻量级跨平台异步 socket 库
授权协议 MIT
开发语言 C/C++
所属分类 程序开发、 网络工具包
软件类型 开源软件
地区 国产
投 递 者 戚阳
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

yasio 是一个轻量级跨平台的异步 socket 库,专注于客户端和基于各种游戏引擎的游戏客户端网络服务, 支持 windows & linux & apple & android & win10-universal。

特性:

  • 提供相同的 API 来管理 TCP, UDP, KCP 传输。
  • 支持 IPv4/IPv6 或者苹果 IPv6_only 网络。
  • 支持处理多个连接的所有网络事件。
  • 支持微秒级定时器。
  • 支持 TCP 粘包处理,业务完全不必关心。
  • 支持 Lua 绑定。
  • 支持 Cocos2d-x jsb 绑定。
  • 支持 CocosCreator jsb2.0 绑定
  • 支持 Unity3D
  • 支持 虚幻4
  • 支持组播。
  • 支持 KCP。
  • 支持 SSL 客户端,基于 OpenSSL。
  • 支持非阻塞域名解析,基于 c-ares。

应用案例

  • 红警OL手游项目: 用于客户端网络传输,并且随着该项目于2018年10月17日由腾讯游戏发行正式上线后稳定运行于上千万移动设备上。
  • x-studio软件项目: 用于实现局域网UDP+TCP发现更新机制。

框架图

    • yasio 是一个专注于移动平台和各种客户端的socket库 官网: https://yasio.org/ 文档: https://docs.yasio.org/ 经历近3个多月的研发和测试,终于发布了v3.33.0的正式版本,此版本带来了大量的bug修复和功能增强,详细更新内容如下: 重构UDP Transport,和TCP一样使用发送队列,UDP客户端默认不使用connect绑定四元组,同时提

    • 项目地址 Github: https://github.com/yasio/yasio Gitee: https://gitee.com/simdsoft/yasio zh_CN: 添加pkg-config文件支持. 增强虚幻引擎支持. 增强cmake编译脚本. 修复server socket绑定失败错误处理. 增加server被动事件open/close产生支持. 增加预处理器YASIO_ENA

    • 最近,将 yasio Lua 绑定集成到xlua中使用,结果发现在Apple clang release优化编译模式下,lua构造yasio的io_service对象是直接crash了,刚开始表现是Unity Editor预览即闪退,后通过Xcode附加+VS联合调试发现crash原因是Bad Access, 于是花时间研究了下,将yasio从之前只能在c++11标准下编译,到现在支持在c++14

    • Devices: Windows 10: Intel® Core™ i7-9700 CPU @ 3.00GHz / Windows 10(10.0.19041.264) Linux: Intel® Xeon® Platinum 8163 CPU @ 2.50GHz / Ubuntu 20.04 (Single Core CPU) macOS: Intel® Core™ i7-8850H CPU @

    • 增强timer对象安全性, 不再持有io_service的引用。 将中文文档markdown源文件嵌入主仓库。 修复当启用宏YASIO_VERBOSE_LOG时编译错误。 修复当启用YASIO_HAVE_KCP时 speedtest 编译错误。 公开字节序转换接口host_to_network和network_to_host到yasio命令空间。 增加接口 yasio::set_thread_na

    • Add 7bit Encoded Int64support for obstream/ibstream Rename obstream/ibstream 7bit Encoded IntAPIs write_i/read_ito write_ix/read_ix Rename obstream/ibstream Fixed Encoded NumberAPIs write_ix/read_ixto

    • 此版本带来的重要变化是对多路io复用模型进行了重构,底层支持在select和poll之间切换,默认使用poll,通过添加编译选项-DYASIO_DISABLE_POLL=1可切换会select模型。 版本更新原由: 公司unity项目出现select模型由于socket句柄过大,超过1024,android表现是FD_SET时闪退。开发阶段,macos下由于socket文件描述符过大导致selec

    • yasio-3.31.0发布 (轻量级跨平台网络库) 添加initialBytesToStrip参数设置支持, 使用选项YOPT_C_LFBFD_IBTS设置 添加ssl支持,使用YASIO_HAVE_SSL编译宏启用, 用信道码YCM_SSL_CLIENT打开ssl客户端,需要openssl支持,默认cocos2dx已包含openssl库. 集成 c-ares 异步域名解析库,使用YASIO_H

    • yasio-3.31.2[stable]更新 优化单利类模板实现,详见: https://github.com/simdsoft/yasio/issues/200 修正配置宏拼写YASIO_VERBOS_LOG修正为YASIO_VERBOSE_LOG. 调用bsd socket API getaddrinfo解析域名时明确传入socktype, 默认值SOCK_STREAM, 避免在mac或lin

    • yasio-3.35.0 提供更加通用的字节序转换函数模板host_to_network和network_to_host,在yasio::endian命名空间下,可匹配全部数值类型 采用convert_traits模板抽象二进制序列化工具类obstream, ibstream的字节序转换 新增无字节序转换的快速二进制序列化类:fast_obstream, fast_ibstream 修复io_se

    • yasio-3.36.0 增加更小的ssl通讯后端库mbedtls支持 增加接口 xxsocket::not_send_error 统一检查当底层send返回值< 0时,socket状态是否正常 增加接口xxsocket::not_recv_error 统一检查当底层recv返回值< 0时,socket状态是否正常 删除无用接口 xxsocket::alive 删除所以废弃的API 重命名 xxs

    • 修复使用c-ares时在ios平台获取不到系统dns问题 增加YOPT_S_DNS_DIRTY选项,启用c-ares时,当手机设备网络环境发生变化时,应当设置此选项 增强当内核发送缓冲区满时事件注册逻辑

     相关资料
    • 问题内容: 我正在寻找一种轻巧的方法来使我的程序(用C语言编写)能够在Windows或Linux上播放音频文件。我目前正在使用Windows本机调用,这实际上只是传递文件名的单个调用。我想要在Linux上也可以使用的类似软​​件。 音频文件是Microsoft PCM,单通道,22Khz 有什么建议么? 问题答案: 由于我也在寻找问题的答案,因此我做了一些研究,但没有找到播放音频文件的任何简单(类

    • 多平台支持 Mpx支持在多个小程序平台中进行增强,目前支持的小程序平台包括微信,支付宝,百度,qq和头条,不过自2.0版本后,Mpx支持了以微信增强语法为base的跨平台输出,实现了一套业务源码在多端输出运行的能力,大大提升了多小程序平台业务的开发效率,详情可以查看template增强特性 不同平台上的模板增强指令按照平台的指令风格进行设计,文档和代码示例为了方便统一采用微信小程序下的书写方式。

    • 在Android上执行SRV记录查找的最节省资源的方法是什么,例如在XMPP客户端(如Yaxim)中? null 编辑:提供DNSSEC验证/DANE证书查询的奖励积分。

    • 我需要在我的应用程序中为不同的标签指定不同的FontFamily。我需要使用默认字体(如Android的Roboto和iOS的Helvetica)及其修改(如轻、中、粗)。据我所知,我应该使用Roboto-Light和Helvetica-Light来获得字体的轻版本(中号和粗体相同)。除了这个需求之外,我还需要在XAML中设置字体(如文档中所描述的),所以我最终得到了以下代码 然而,在Androi

    • 作为第三代数据统计和分析平台,诸葛实现了对用户的实名(实账号)分析,并主张互联网产品分析以用户为中心的分析思想并提供了一系列方法论。对用户的唯一标识来源于企业自身数据库对用户的唯一识别符,也即诸葛底层数据采集是以用户为中心的采集,我们提供了跨平台分析版本, 满足企业以用户为中心的整体的分析需求,不同平台相同业务价值下的用户完整的故事解读(例如:分析电商的用户在PC端浏览产品,在移动端支付的转化率)

    • 说明 由于在跨端开发中,必不可少的会遇到不同端需要有不同实现的情况。参考滴滴chameleon中的多态,megalo中实现了类似的跨平台兼容方案。需要使用时,请保证@megalo/target的版本号大于或等于0.7.2。 js的跨平台兼容 megalo中下面两种形式的引用会被特殊处理: [path-to-name]/[name]/index.mpjs [path-to-name]/[name]

    • 问题内容: 对于Windows,我的Node脚本应如下所示: 但是在Linux上没有,所以会像这样: 有没有办法以一致且跨平台的方式声明环境变量? 问题答案: 我最近遇到了跨环境项目。这很简单 这会将环境变量设置为,而不管操作系统是什么。

    • 问题内容: 我想在Unix和Windows上使用特定于平台的目录。请看一下代码: 这个输出 我想第二次打电话给(windows)类似 是否可以告诉我在Windows上运行的程序使用Windows分隔符?还是应该始终将反斜杠转换 为正斜杠()?这里首选的策略是什么? 问题答案: 我看到“问题”在哪里。在golang-nuts上的讨论为我提供了提示,该提示始终使用并且是用于依赖平台的操作的函数。 在W