转自: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. python使用execjs执行含有document、window等对象的js代码,使用jsdom解决

    当我们分析爬虫时,有时候会遇到一些加密参数,这个时候就需要我们逆向分析js python执行js有一些第三方库 https://www.jianshu.com/p/2da6f6ad01f0 因为我用的 ...

  2. MATLAB高斯混合数据的生成

    MATLAB高斯混合数据的生成 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 高斯混合模型的基本原理:聚类——GMM,MATLAB中GMM聚类算法:M ...

  3. easyui三

    陈旧的开发模式 美工(ui工程师:出一个项目模型) java工程师:将原有的html转成jsp,动态展示数据 缺点: 客户需要调节前端的展示效果 解决:由美工去重新排版,重新选色.Vs前后端分离 美工 ...

  4. 04-align-content 它对于当单行是没有效果的

    /* 运用在父级元素上  align-content:   它通产与子元素的div{margin:10px 一起联合使用 }*/ ps==>用在子项出现换行的情况下,并是多行的情况下哦.运用在子 ...

  5. 02-align-items的用法

    侧轴是相对的 默认主轴是x 所以侧轴就是y轴 align-items设置侧轴上的子元素排列的方式(单行)纵轴方向上的对齐方式 align-items: flex-start; 顶部对齐 align-i ...

  6. 元昊讲django框架

    一 什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有 ...

  7. vue 多种方式控制style属性

    一共用到了两种方式: 第一种:对象 第二种:数组 看代码: <!doctype html> <html lang="en"> <head> &l ...

  8. 【CF464E】The Classic Problem(主席树+最短路)

    点此看题面 大致题意: 给你一张无向图,每条边的边权为\(2^{x_i}\),求\(s\)到\(t\)的最短路. 最短路 最短路,首先考虑\(Dijkstra\).这里用\(SPFA\)似乎不太好,因 ...

  9. Serializable接口的意义和用法

    本人软件工程大三妹子一枚,以下为个人观点仅供参考: 最近在云课堂学习springmvc+mybatis项目时,发现老师在实体类中引用了serializable这个接口,如下:   import jav ...

  10. 如何编写一个 SendFile 服务器

    如何编写一个 SendFile 服务器 前言 之前讨论零拷贝的时候,我们知道,两台机器之间传输文件,最快的方式就是 send file,众所周知,在 Java 中,该技术对应的则是 FileChann ...