C++一个很大的用途就是作为网络层组件的开发语言。C++开发的第三方网络库也比较多。其实,c语言下的网络库也不少。现在简单介绍一下。

ACE库

ACE是一个大型的中间件产品,代码有几十万行,非常宏大,里面使用了一堆的设计模式,架构了一层又一层,具体使用的时候, 要根据情况,要看从那一层来进行使用。而且,它也支持跨平台。现在基本上都把ACE当成一个框架,它的主要应用场景是高性能和实时通信服务和应用,比如高性能服务器的开发。它简化了使用进程间通信、事件多路分离、显式动态链接和并发的OO网络应用和服务的开发。此外,通过服务在运行时与应用的动态链接,ACE还使系统的配置和重配置得以自动化。

ACE方面的书籍不是很多,大概也就五六本,想深入研究的话,最好看源代码。想要学好,需要下一番功夫。

BOOST的ASIO库

Asio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发,它也是开源、免费,支持跨平台。相对于ACE,asio库就要“亲民”了很多,学习起来也相对容易。asio库基于操作系统提供的异步机制,采用前摄器模式(Proactor)实现可移植的异步(或同步)IO操作,不需要使用多线程和锁,有效避免多线程编程带来的诸多有害副作用(如竞争,死锁)。asio封装了操作系统的select、kqueue、poll/epoll、overlapped I/O等机制,实现异步IO模型。在同步模式下,程序发起一个IO操作,向io_service提交请求,io_service把操作转交给操作系统,同步地等待。当IO操作完成时,操作系统通知io_service,然后io_service再把结果发回给程序,完成整个同步流程。在异步模式下,程序除了要发起IO操作,还要定义一个用于回调的完成处理函数。io_service同样把IO操作转交给操作系统执行,但它不同步等待,而是立即返回。调用io_service的run()成员函数可以等待异步操作完成,当异步操作完成时io_service从操作系统获取结果,在调用handler执行后续逻辑。

这种依赖操作系统事件的网络库也比较多,另外,整个boost学习起来也没有那么难,只要理解了C++的模板概念,学习起来就容易多了。而且,boost相关的书籍很多,网络上的教程和代码分析也很多,可参考的资料就很丰富了。Asio的用途也相对比较广泛,linux用的比较多。

Linux下的Muduo库

如果刚开始学习c++网络,建议先从muduo库开始学起。muduo是一个高质量的Reactor网络库,采用one loop per thread + thread pool架构实现,代码简洁,逻辑清晰,是学习网络编程的很好的典范。Muduo也是一个基于事件的非阻塞网络库。书籍和资料也比较多。

Libevent

Libevent不能说是一个c++库,而是一个事件驱动框架,一个用C语言编写的、轻量级的开源高性能事件通知库,他也是跨平台的。有以下特点:事件驱动,高性能;轻量级,专注于网络(相对于ACE);开放源码,代码相当精炼、易读;跨平台,支持Windows、Linux、BSD和Mac OS;支持多种I/O多路复用技术(epoll、poll、dev/poll、select和kqueue等),在不同的操作系统下,做了多路复用模型的抽象,可以选择使用不同的模型,通过事件函数提供服务;支持I/O,定时器和信号等事件;采用Reactor模式;

还有一些其他的网络库,比如libev、libu等,资料也比较多。每种网络库都有自己的优势和劣势,可以根据语言场景选择自己需要的。学习时建议先看些理论的东西,搞懂后再去读一些小型开源网络库的源代码,加深理解。最好自己也写一个小型的网络组件,以后应用起来也更得心应手。

handy

开源且简洁易用的C++11网络库,上手很快,10行代码能够编写一个完整的服务器

git地址:https://github.com/yedf2/handyhttps://github.com/yedf2/handy

cpp-httplib

编写httpserver非常方便的开源库,基于C++11,只需要引入一个头文件,几行代码即可编写httpserver

git地址:

GitHub - yhirose/cpp-httplib: A C++ header-only HTTP/HTTPS server and client libraryA C++ header-only HTTP/HTTPS server and client library - GitHub - yhirose/cpp-httplib: A C++ header-only HTTP/HTTPS server and client libraryhttps://github.com/yhirose/cpp-httplib

参考:百度安全验证

C++常用库之网络库相关推荐

  1. C++常用的一些网络库

    文章目录 前言 一.libcurl:高可移植.功能丰富的通信库 二.cpr:更现代.更易用的通信库 三.ZMQ:高效.快速.多功能的通信库 总结 前言 这几天浏览了一下极客时间罗剑锋老师的<C+ ...

  2. 常用C/C++开源库

    1. 框架 Apache C++ Standard Library : 是一系列算法,容器,迭代器和其他基本组件的集合 ASL : Adobe源代码库提供了同行的评审和可移植的C++源代码库. Boo ...

  3. Muduo网络库核心梳理

    Muduo网络库 Muduo网络库本身并不复杂,是一个新手入门C++面向对象网络编程的经典实战项目.但是,新手在刚刚上手读代码的时候,非常容易陷入代码的汪洋大海,迷失方向.本文旨在简要梳理Muduo网 ...

  4. python网络爬虫的第三方库_Python常用第三方库_网络爬虫、数据分析与WEB开发、机器学习...

    Python语言有超过12万个第三方库,覆盖信息技术几乎所有领域.下面简单介绍下网络爬虫.自动化.数据分析与可视化.WEB开发.机器学习和其他常用的一些第三方库,如果有你感兴趣的库,不妨去试试它的功能 ...

  5. C++ 第三方常用网络库

    From:https://www.cnblogs.com/aitantianderuangutou/p/11416902.html (1) ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库 ...

  6. python网络爬虫方向的第三方库_Python网络爬虫中常用第三方库总结

    python对于爬虫的编写已经是相当的友好了,不过除了利用requests库或者scrapy框架之外,有一些库还需要我们知道,以便于我们更熟练.便捷的完成目标数据的爬取,接下来我就总结一下我认为在爬虫 ...

  7. IOS常用代码总结 - 第三方库部分

    1 SBJson的使用 JSON是一种数据交换语言,和XML是同样用途的.不过JSON的体积要比XML小,也就意味着在网络传输中 速度会比XML更快. 这里可以看到更多关于json的资料:http:/ ...

  8. muduo网络库源码阅读Step by Step

    Posted on: Nov 26 2015 Categories: muduo C++ Tags: muduo 一般写服务端程序都需要有一个称手的网络库来帮我们处理琐碎的网络通信细节,比如连接的建立 ...

  9. 《Linux多线程服务端编程:使用muduo C++网络库》书摘6.6.2节

    6.6.2 常见的并发网络服务程序设计方案 W. Richard Stevens 的<UNIX 网络编程(第2 版)>第27 章"Client-ServerDesign Alte ...

最新文章

  1. mxnet中symbol的网络结构输出(参数维度,和每层输出维度)
  2. python中module用法_Python学习之module用法
  3. 她13岁自己造飞机,17岁进麻省理工,3篇黑洞论文被霍金引用......
  4. 计算机应用常用的30个函数,Excel中常用函数的使用
  5. python删除list多个相同元素_python删除list中的重复元素
  6. 【图像融合】基于matlab GUI简单+拉普拉斯金字塔算法图像融合【含Matlab源码 780期】
  7. oppo k10 Pro和iqooneo6se哪个性能更强 哪个值得买呢
  8. Java List retainAll方法使用注意事项
  9. vue开发app端使用H5+下载文件流
  10. 魔兽服务器人口查询网站是多少,网易魔兽世界人口普查
  11. 如何将摄像机拍摄信号采集到直播软件
  12. 【Delphi Stringgrid 设置表格文字居中后有重影,去除重影方法】
  13. Linux各目录及每个目录的详细介绍
  14. Java之美[从菜鸟到高手演变]之集合类【吐血推荐!讲得太好了!!!】
  15. Argo CD系列视频图文版之安装 argocd 并运行示例
  16. 印刷方式——标识丝印工艺
  17. C#之Image使用
  18. SQL SERVER添加表注释、字段注释
  19. 【转自知乎】5G关键技术之波束成形
  20. STM32移植BME680传感器输出IAQ(室内空气质量)

热门文章

  1. 你是只有一个支点的女人吗?
  2. Python 常见加密方式和实现
  3. 鸿蒙(二)基于小熊派实现LOT上云的智慧家居项目
  4. 【Unity Animation】 read-only 无法添加关键帧
  5. Firebird与MySQL: 钟为谁鸣
  6. 在VMware Workstation 15 Pro 上的安装ACS5.2
  7. 名画09 韩干《十六神骏图卷》
  8. 人脸识别运用于大熊猫,刷脸支付核心安全技术未来可期
  9. 微信小助手2.9.0:专为mac微信3.1.2发行!支持发朋友圈!
  10. Flutter 开发踩坑记录