转自: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. C C++ ARM X86 函数 方法 的调用约定

    参考:https://bbs.pediy.com/thread-224583.htm 整理成表格方便查询 cdecl(C规范), stdcall(WinAPI默认), fastcall, ATPCS( ...

  2. 03-flex-wrap是否换行

     flex-wrap:运用到父元素上 结合 display: flex; flex-wrap: wrap; 换行 flex-wrap: nowrap; 不换行 #main { width: 300px ...

  3. STL ——map、set、unordered_map、unordered_set

    1.map和set map和set底层实现均是红黑树 map支持下标操作,set不支持下标操作. set的迭代器是const的,不允许修改元素的值:map允许修改value,但不允许修改key. se ...

  4. kettle工具字符串替换

    原数据: 去掉括号内容(包括括号,或者替换为指定内容) 即可. 世界之大,这个东西,准确的说正则表达式,我搞了小半天!!!

  5. GitHub 注册失败的原因 以及解决 。

    1.注册的时候老是卡在第一步: 提交用户名和密码 还有邮箱的时候 提交成功后. 不跳出 第二步.若现在去登录账号和密码,不管输对的还是输错的都是显示错误的.2.查看GitHub官网帮助后,不难发现问题 ...

  6. backbone 路由传参(可选)

    因为维护公司的老项目而接触到backbone.以前是只闻其名,未见其码. 因为其他项目需要跳转到本项目的某个页面,但是需要UI改变. 考虑的方法是给路由添加一个可选参数.代码如下: 正常路由: rou ...

  7. 【08月14日】A股ROE最高排名

    个股滚动ROE = 最近4个季度的归母净利润 / ((期初归母净资产 + 期末归母净资产) / 2). 查看更多个股ROE最高排名 兰州民百(SH600738) - ROE_TTM:86.45% - ...

  8. 解决centos ssh连接很慢的问题

    更改配置文件vi /etc/ssh/sshd_config找到UseDNS 将UseDNS前面的#删除,并将YES改为NO,若找不到UseDNS,则手动添加UseDNS,并将其设置成No保存并重启ss ...

  9. Algorithm: Permutation & Combination

    组合计数 组合数学主要是研究一组离散对象满足一定条件的安排的存在性.构造及计数问题.计数理论是狭义组合数学中最基本的一个研究方向,主要研究的是满足一定条件的排列组合及计数问题.组合计数包含计数原理.计 ...

  10. 如何让 C# 在运行时自动选择合适的重载方法?

    如题:假设我们有一段代码: static void Main(string[] args) { ; // 假设这里的 obj 的值来自于外部方法 PrintType(obj); } public st ...