- Linux Socket Programming In C++ : http://tldp.org/LDP/LG/issue74/tougher.html
- ACE: http://www.cs.wustl.edu/~schmidt/ACE.html
ACE 采用 ACE_OS 适配层屏蔽各种不同的, 复杂繁琐的操作系统 API.
ACE 是一个大型的中间件产品, 代码 20 万行左右, 过于宏大, 一堆的设计模式, 架构了一层又一层. 它庞大, 复杂, 适合大型项目. 开源, 免费, 不依赖第三方库. 使用的时候, 要根据情况, 看你从哪一层来进行使用. 支持跨平台.
ACE 超重量级的网络通信开发框架. ACE 自适配通信环境 (AdaptiveCommunication Environment) 是可以自由使用, 开放源代码的面向对象框架, 在其中实现了许多用于并发通信软件的核心模式. ACE 提供了一组丰富的可复用 C++ 包装外观 (Wrapper Facade) 和框架组件, 可跨越多种平台完成通用的通信软件任务, 其中包括: 事件多路分离和事件处理器分派, 信号处理, 服务初始化, 进程间通信, 共享内存管理, 消息路由, 分布式服务动态 (重) 配置, 并发执行和同步, 等等
3. C++ Sockets Library: http://www.alhem.net/Sockets/index.html
它是一个跨平台的 Sockets 库, 实现包括 TCP,UDP,ICMP,SCTP 协议. 已实现的应用协议包括有 SMTP,HTTP(S),Ajp. 具有 SOCKS 客户端实现以及匿名 DNS, 支持 HTTP 的 GET/POST/PUT 以及 webServer 的框架.
它封装了 sockets C API 的 C++ 类库. 支持 SSL, IPv6, tcp 和 udp sockets, sctp sockets, http 协议, 高度可定制的错误处理.
4. Asio C++ Library: http://think-async.com/
它是一个基于 Boost 开发的异步 IO 库, 封装了对 Socket 的常用操作, 简化了基于 Socket 程序的开发. 它开源, 免费, 支持跨平台.
5. libevent: http://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. libev: http://software.schmorp.de/pkg/libev.html
它是一个 C 语言写的, 只支持 Linux 系统的库, 以前的时候只封装了 EPOLL 模型. 使用方法类似 libevent, 但是非常简洁, 代码量是最少的一个库, 也就几千行代码. 显然这样的代码跨平台肯定是无法支持的了, 如果你只需要在 Linux 下面运行, 那用这个库也是可以的.
libev 和 libevent 很像, 按照作者的介绍, 可以作为 libevent 的替代者, 能够提供更高的性能. libev 是一个高性能事件循环, 所实现的功能就是一个强大的 reactor.
7. SimpleSocket: http://home.kpn.nl/lcbokkers/simsock.htm
这个类库让编写基于 Socket 的客户 / 服务器程序更加容易.
- 8. simple-socket: http://sourceforge.net/projects/simple-socket/
- An easy to use C++ socket andnetwork library, mainly for UNIX systems.
- 9. POCO: http://pocoproject.org/
POCO C++ Libraries 提供一套 C++ 的类库用以开发基于网络的可移植的应用程序, 功能涉及线程, 线程同步, 文件系统访问, 流操作, 共享库和类加载, 套接字以及网络协议包括: HTTP,FTP,SMTP 等; 其本身还包含一个 HTTP 服务器, 提供 xml 的解析和 SQL 数据库的访问接口. POCO 库的模块化, 高效的设计及实现使得 POCO 特别适合嵌入式开发. 在嵌入式开发领域, 由于 C++ 既适合底层 (设备 I/O, 中断处理等) 和高层面向对象开发, 越来越流行.
10. libcurl: http://curl.haxx.se/libcurl/
libcurl 是免费的轻量级的客户端网络库, 支持 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, 用户名与密码认证.
如果你开发的是客户端, libcurl 是一个不错的选择.
11. libiop: http://sourceforge.net/projects/libiop/
一个 c 语言开发的跨平台网络 IO 库.
功能特性: c/c++API, 底层支持 epoll, select,poll 等 io 模型; 异步事件模型; 任务池模型, 跨平台线程接口; 跨平台(Linux/Windows); 日志服务; 稳定, 支持 7*24 小时无间断运行, 自动处理异常状态; 高并发与快速响应; API 简洁, 学习成本底.
注: 以上内容整理自网络!
来源: http://www.bubuko.com/infodetail-2932471.html