转自:https://www.cnblogs.com/gccbuaa/p/7015599.html

1.      Linux Socket Programming In C++ : http://tldp.org/LDP/LG/issue74/tougher.html

2.      ACEhttp://www.cs.wustl.edu/~schmidt/ACE.html

ACE採用ACE_OS适配层屏蔽各种不同的、复杂繁琐的操作系统API。

ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层。它庞大、复杂。适合大型项目。开源、免费。不依赖第三方库。使用的时候,要依据情况。看你从哪一层来进行使用。支持跨平台。

ACE超重量级的网络通信开发框架。ACE自适配通信环境(AdaptiveCommunication Environment)是能够自由使用、开放源码的面向对象框架。在当中实现了很多用于并发通信软件的核心模式。

ACE提供了一组丰富的可复用C++包装外观(Wrapper Facade)和框架组件,可跨越多种平台完毕通用的通信软件任务,当中包含:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步,等等

3.      C++ Sockets Libraryhttp://www.alhem.net/Sockets/index.html

它是一个跨平台的Sockets库,实现包含TCP、UDP、ICMP、SCTP协议。已实现的应用协议包含有SMTP、HTTP(S)、Ajp。具有SOCKSclient实现以及匿名DNS。支持HTTP的GET/POST/PUT以及WebServer的框架。

它封装了sockets C API的C++类库。支持SSL, IPv6, tcp和udp sockets, sctp sockets, http协议, 高度可定制的错误处理。

4.      Asio C++ Libraryhttp://think-async.com/

它是一个基于Boost开发的异步IO库,封装了对Socket的经常使用操作。简化了基于Socket程序的开发。它开源、免费、支持跨平台。

5.      libeventhttp://libevent.org/

它是一个C语言写的网络库,主要支持的是类Linux 操作系统,最新的版本号加入了对Windows的IOCP的支持。因为IOCP是异步IO。与Linux下的POLL模型。EPOLL模型,还有freebsd的KQUEUE等这些同步模型在用法上全然不一致。所以用法也不一样,就好比ACE中的Reactor和Proactor模式一样。使用起来须要转变思路。

假设对性能没有特别的要求。那么使用libevent中的select模型来实现跨平台的操作,select模型能够横跨Windows,Linux,Unix。Solaris等系统。

Libevent是一个轻量级的开源高性能网络库,它的机制是採用事件触发,封装了以下三种事件的响应:IO事件,定时器事件,信号事件。

select模型来实现跨平台的操作,Windows环境下支持IOCP。Google的开源WEB浏览器Chromium在Mac和Linux版本号中。也使用了Libevent。足见该库的质量。

6.      libevhttp://software.schmorp.de/pkg/libev.html

它是一个C语言写的。仅仅支持Linux系统的库,曾经的时候仅仅封装了EPOLL模型.用法相似libevent,可是非常简洁,代码量是最少的一个库。也就几千行代码。显然这种代码跨平台肯定是无法支持的了,假设你仅仅须要在Linux以下执行。那用这个库也是能够的。

libev和libevent非常像,依照作者的介绍,能够作为libevent的替代者。能够提供更高的性能。

libev是一个高性能事件循环,所实现的功能就是一个强大的reactor。

7.      SimpleSockethttp://home.kpn.nl/lcbokkers/simsock.htm

这个类库让编写基于Socket的客户/server程序更加容易。

8.      simple-sockethttp://sourceforge.net/projects/simple-socket/

An easy to use C++ socket andnetwork library, mainly for UNIX systems.

9.      POCOhttp://pocoproject.org/

POCO C++ Libraries提供一套C++的类库用以开发基于网络的可移植的应用程序,功能涉及线程、线程同步、文件系统訪问、流操作、共享库和类载入、套接字以及网络协议包含:HTTP、FTP、SMTP等;其本身还包含一个HTTPserver。提供XML的解析和SQL数据库的訪问接口。POCO库的模块化、高效的设计及实现使得POCO特别适合嵌入式开发。在嵌入式开发领域,因为C++既适合底层(设备I/O、中断处理等)和高层面向对象开发,越来越流行。

10.  libcurlhttp://curl.haxx.se/libcurl/

libcurl是免费的轻量级的client网络库。支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet, TFTP.支持SSL, HTTPPOST,HTTPPUT, FTP上传, HTTP form上传,代理,cookies, username与password认证。

假设你开发的是client。libcurl是一个不错的选择。

11.  libiophttp://sourceforge.net/projects/libiop/

一个c语言开发的跨平台网络IO库。

功能特性:c/c++api, 底层支持epoll, select,poll等io模型。异步事件模型;任务池模型,跨平台线程接口。跨平台(Linux/windows)。日志服务。稳定。支持7*24小时无间断执行。自己主动处理异常状态;高并发与高速响应;API简洁,学习成本底。

注:以上内容整理自网络!

Linux下经常使用的C/C++开源Socket库【转】的更多相关文章

  1. Linux下经常使用的C/C++开源Socket库

    1.      Linux Socket Programming In C++ : http://tldp.org/LDP/LG/issue74/tougher.html 2.      ACE: h ...

  2. Linux下c函数dlopen实现加载动态库so文件代码举例

    dlopen()是一个强大的库函数.该函数将打开一个新库,并把它装入内存.该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的.这种机制使得在系统中添加或者删除一个模块时,都不需要重新编译了. ...

  3. 推荐linux下的数据库开发工具DBeaver 开源免费

    linux下不错的数据库管理工具 DBeaver 操作比较友好,基于eclipse.使用jdbc链接,链接数据库非常全(oracle mysql mssql sqlite  常见的统统支持).而且可以 ...

  4. linux下c程序的链接、装载和库(1)

    读完<程序员的自我修养--链接.装载和库>相关章节,想来总结一下,若有错误,请指正,多谢. 1. 什么叫目标文件? 你的工程里有很多xxx.c这样的源文件,这些文件是文本文件,只有人能够认 ...

  5. linux下gcc默认搜索的头文件及库文件路径

    转自:https://blog.csdn.net/fd315063004/article/details/7925854 一.头文件 gcc 在编译时如何去寻找所需要的头文件:※所以header fi ...

  6. (原)linux下利用cmake来编译jthread开源库

    其实上次在用hisi3531平台的时候,就已经编译过一次这个库了,这次换了平台环境,交叉编译器变成了arm-hisiv100-linux-工具链,所以,没办法只能重新来过. 因为之前编译过,所以这次还 ...

  7. linux下关于PCL(point cloud library)库的安装,三行命令错误的问题

    最近想再看看PCL,所以进行了安装,在之前的接触的过程中,由于之前的网络存在问题,导致以下三个命令: sudo add-apt-repository ppa:v-launchpad-jochen-sp ...

  8. Linux下安装git本地库与服务器端远程库

    1.    git是一个分布式版本管理系统,关于该工具的详细介绍,我认为廖雪峰老师介绍的非常全面:https://www.liaoxuefeng.com/wiki/896043488029600. 不 ...

  9. linux下c程序的链接、装载和库(2)

    5. 重定义错误. 一个最终的可执行文件里,绝对不允许出现两个同名的全局变量,也不允许出现同名的全局函数. 全局函数:只要不用 static 修饰符修饰的函数,全部都是全局的. 全局变量:函数外声明定 ...

随机推荐

  1. aspx使用KindEditor副文本框插件出现检测到有潜在危险

    web配置添加    <httpRuntime requestValidationMode="2.0" /> aspx页面添加   ValidateRequest=&q ...

  2. requests---requests发送json数据类型

    我们都知道post请求中的body有4种数据类型,今天我们来写一篇关于requests请求json这种数据类型. 数据类型 我们都知道post和get有个大的区别就是get没有body而post存在b ...

  3. show()和隐藏hide() slideDown()和 slideUp() fadeIn()和fadeOut()

    1==>显示show()和隐藏hide() 是一组动画 与切换toggle()$("div").show():当不传递参数时,没有动画效果,它将某个元素瞬间显示出来 $(&q ...

  4. CountDownLatch/CyclicBarrier/Semaphore 使用过吗?

    CountDownLatch/CyclicBarrier/Semaphore 使用过吗?下面详细介绍用法: 一,(等待多线程完成的)CountDownLatch  背景; countDownLatch ...

  5. Java学习路线|转至CodeSheep

    Java学习路线 基础知识 . 基本语法 基本网络知识:tcp/ip http/https 工具方面 . 操作系统:linux (CentOS\Ubuntu\Fe..) 代码管理:svn/git 持续 ...

  6. linux学习(二)linux系统的安装

    Linux 安装 本章节我们将为大家介绍 Linux 的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果直接不想搭建,也可以直接买一台学习用用,参考各大云服务器比较. 本章节以 ce ...

  7. day56_9_20orm中的关键字段,orm查询13方法整合,查询优化和事务。

    一.常用字段. 在orm中有一些字段是常用字段: 1.AutoField 这个字段是自增的,必须填入参数primary_key=True,也就是说这个字段是表的主键,如果表类中没有自增列,就会自动创建 ...

  8. [题解向] CF#536Div2の题解 E&F

    \(0x01~~Preface\) \(emmm\)这次CF本身打的很顺畅,但是居然unrated了--咕咕咕咕 这是头一次CF有比赛我全部题目都做了--可喜可贺可喜可贺233 简单总结一下前面四道题 ...

  9. ASP.NET Core 之 Identity 入门(转载)

    原文地址:https://www.cnblogs.com/gongap/p/9504562.html 前言 在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库 ...

  10. PCL学习之:将超声数据按照PCL点云方式发布出去

    前言:基于2D激光雷达的机器人,想让它跑自动导航,众所周知有2个比较明显的缺陷,1,那就是普通的激光雷达无法对玻璃或是镜面物体有反映; 2,机器人避障时只能对某一个平面的物体有反映,超过或者低于这个平 ...