`

C++网络库总结

    博客分类:
  • c++
阅读更多


1. ACE - Adaptive Communication Environment http://www.cs.wustl.edu/~schmidt/ACE.html 
2. Common G++ (GNU) http://www.gnu.org/software/commoncpp/ 
3. Socket++ version 1.11 http://www.cs.utexas.edu/users/lavender/courses/socket++/ 
4. Socket++ version 1.12+ http://www.linuxhacker.at/socketxx 
5. SocketMan http://web.media.mit.edu/~kbrussel/SocketMan/ 
6. Skstream - IOStream based socket library http://www.worldforge.org/dev/eng/libraries/skstream 
7. SimpleSocket - http://home.hetnet.nl/~lcbokkers/simsock.htm 
8. PTypes - C++ Portable Types Library (includes multithreading and networking) http://www.melikyan.com/ptypes 
9. OpenTransport - The Classic MacOS networking API; much different from Sockets, but should be considered during design phase 
10. CPPSocket - http://sourceforge.net/projects/cppsocket 
11. C++ Sockets Library - http://www.alhem.net/Sockets/ 
12. socketstream http://socketstream.sourceforge.net/ 
13. DTILib http://www.dtilib.dk/ 
14. Qts network module. http://doc.trolltech.com/4.1/qtnetwork.html 
15. Poco http://pocoproject.org/ 
16. NetClass http://netclass.sourceforge.net/ 
17. FEDLibrary http://sourceforge.net/projects/fedlibrary/ 
18. C++ Stream Compatible TCP/IP Sockets http://sourceforge.net/projects/cpp-sockets/ 
19. Asio http://asio.sourceforge.net or http://think-async.com/Asio/

*************************************************************************************************

ACE与ASIO之间关于Socket编程的比较

转载自:http://www.rosoo.net/a/201001/8254.html

ACE是一个很成熟的中间件产品,为自适应通讯环境,但它过于宏大,一堆的设计模式,架构是一层又一层,对初学者来说,有点困难。 
ASIO是基本Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。 

最近分析ASIO的源代码,让我无不惊呀于它设计。在ACE中开发中的内存管理一直让人头痛,ASIO的出现,让我看到新的曙光,成为我新的好伙伴。简单地与ACE做个比较。 

1.层次架构: 
ACE底层是C风格的OS适配层,上一层基于C++的wrap类,再上一层是一些框架(Accpetor, Connector,Reactor等),最上一层是框架上服务。 
ASIO与之类似,底层是OS的适配层,上一层一些模板类,再上一层模板类的参数化(TCP/UDP),再上一层是服务,它只有一种框架为io_service。 

2.涉及范围: 
ACE包含了日志,IPC,线程,共享内存,配置服务等。 
ASIO只涉及到Socket,提供简单的线程操作。 

3.设计模式: 
ACE主要应用了Reactor,Proactor等。 
而ASIO主要应用了Proactor。 

4.线程调度: 
ACE的Reactor是单线程调度,Proactor支持多线程调度。 
ASIO支持单线程与多线程调度。 

5.事件分派处理: 
ACE主要是注册handler类,当事件分派时,调用其handler的虚挂勾函数。实现ACE_Handler / ACE_Svc_Handler / ACE_Event_handler等类的虚函数。 
ASIO是基于函数对象的hanlder事件分派。任何函数都可能成为hanlder,少了一堆虚表的维护,调度上优于ACE。 

6.发布方式: 
ACE是开源免费的,不依赖于第3方库, 一般应用使用它时,以动态链接的方式发布动态库。 
ASIO是开源免费的,依赖Boost,应用使用时只要include头文件,不需动态库。 

7.可移植性: 
ACE支持多种平台,可移植性不存在问题,据说socket编程在linux下有不少bugs。 
ASIO支持多种平台,可移植性不存在问题。 

8.开发难度: 
基于ACE开发应用,对程序员要求比较高,要用好它,必须非常了解其框架。在其框架下开发,往往new出一个对象,不知在什么地方释放好。 
基于ASIO开发应用,要求程序员熟悉函数对象,函数指针,熟悉boost库中的boost::bind。内存管理控制方面。 

我个人觉得,如果应用socket编程,使用ASIO开发比较好,开发效率比较高。ACE适合于理论研究,它本来就是源于Douglas的学术研究。

转载自:http://blog.csdn.net/yangzhuoluo/archive/2009/06/27/4303134.aspx

c++编程网

分享到:
评论

相关推荐

    一个c++的网络封装库

    C++网络库通常会利用C++的特性,如模板、RAII(资源获取即初始化)、STL(标准模板库)等来提高性能和代码质量。 【压缩包子文件的文件名称列表】 - ChangeLog:这是一个记录软件每次版本更新和修改的文件,可以...

    C-C++网络编程基础:从Socket到高性能网络库的选择.md

    C/C++ 网络编程的基础知识,从 Socket 编程到高性能网络库的选择。首先,文章解释了 Socket 的基本概念及其在网络通信中的作用,包括 TCP 和 UDP 两种主要协议的区别和用法。接着,文章描述了 Socket 编程的典型工作...

    Asio作者介绍C++中的网络库Networking TS

    《Asio作者解析C++中的网络库Networking TS》 这篇文档(P2469r0)是对P2464论文的回应,旨在澄清关于Networking TS(也称为Asio/Net.TS)异步模型的一些误解,并指出它与P2300 Sender/Receiver之间的关系。以下是...

    c++ HTTP协议库 httplib

    总结,httplib库为C++开发者提供了一个强大而易用的HTTP协议解决方案。通过深入学习和实践,开发者可以快速掌握HTTP通信的核心技术,并利用httplib库轻松地构建自己的HTTP应用。无论你是新手还是资深程序员,httplib...

    C++ json库性能对比

    总结来说,C++中的JSON库选择应该基于项目的具体需求,如性能、内存效率、易用性、兼容性和社区支持等因素。对于性能敏感的应用,如网络服务或大数据处理,像rapidjson这样的高性能库可能是首选;而对于那些对代码...

    C++ 客户端通讯库(TCP/UDP/SERIALPORT)

    总结来说,这个C++客户端通讯库涵盖了网络通信中的核心概念,包括TCP和UDP这两种不同的网络协议,以及串行通信。同时,它利用了C++Builder的组件化特性,提供了同步和异步通信模式,增强了其灵活性和实用性。通过...

    C++ ADB 运行库

    总结起来,"C++ ADB 运行库"是针对C++开发者的一个实用工具,它简化了在C++程序中使用ADB命令的过程,提高了开发效率,特别适用于需要频繁与Android设备交互的项目。结合VS2017的强大功能,开发者可以更加专注于应用...

    Visual C++网络编程案例实战.pdf

    《Visual C++网络编程案例实战》一书深入探讨了如何利用Visual C++及MFC类库进行网络编程,尤其强调了Windows Socket的应用。本书不仅覆盖了理论基础,还提供了丰富的实践案例,帮助读者掌握网络编程的核心技能。 #...

    基于C++网络五子棋

    总结,"基于C++网络五子棋"项目涵盖了C++语言基础、MFC框架的使用、网络编程、多线程技术、图形界面设计和游戏逻辑等多个方面的知识。对于初学者来说,这是一个很好的学习实践平台,能够提升综合编程能力。

    C++ TelnetDll动态库

    总结来说,C++ TelnetDll动态库为C++程序员提供了一个方便的工具,让他们能够轻松地在程序中实现与 Telnet 服务器的交互,而无需深入理解底层的网络协议细节。通过熟练掌握其使用,开发者可以提高工作效率,简化复杂...

    c++开源日志库

    总结起来,C++开源日志库是软件开发中不可或缺的一部分,它提供了一种有效的方式来记录和分析程序行为。"c++经典好使精简易懂易用开源日志库"不仅强调了库的实用性,也突出了其易用性和可理解性,这对于开发者来说是...

    C++动态库的使用.rar

    在C++编程中,动态库(Dynamic Link Library,简称DLL)是一种重要的代码共享机制,它允许多个应用程序同时使用同一份代码,从而节省内存资源、减少软件的安装体积,并便于更新和维护。本教程将深入探讨C++动态库的...

    C++运行库,支持库

    总结来说,C++运行库和支持库是C++编程的核心组成部分,它们提供了语言的基本功能和扩展功能。运行库配置文件则保证了程序在各种环境下的兼容性和正确性。理解这些概念对于任何C++开发者来说都是至关重要的,尤其是...

    ]Visual C++网络编程开发与实战-清华大学.pdf

    《Visual C++网络编程开发与实战》一书是IT领域特别是软件开发与网络通信方向的一本重要参考文献,由清华大学出版社出版。这本书深入浅出地介绍了Visual C++环境下网络编程的基本理论、关键技术以及实践应用,适合于...

    curl 库文件,可用于C++ https 通信

    总结,curl库文件是C++开发中不可或缺的工具,它极大地简化了网络通信的复杂性,提供了高效、安全的网络数据传输方案。无论是进行简单的HTTP请求还是复杂的HTTPS操作,libcurl都能提供强大的支持。

    C++面试常问知识点总结

    c++常用知识点总结,包含c++基础知识、c++内存、c++面向对象、c++stl、c++ 新特性、c++操作系统、c++计算机网络、c++数据库、c++设计模式。 C++在C语言基础上引入了面对对象的机制,同时也兼容C语言。 C++有三大特性...

    windows C++ socket库 外国人写的 带demo

    总结,这个外国人编写的Windows C++ Socket库通过提供具体的示例代码,有助于开发者快速理解和掌握Socket编程。通过深入研究"Socket.cpp-master",你可以了解到如何在C++中构建简单的网络应用,无论是创建一个简单的...

    Microsoft Visual C++编程经验总结

    《Microsoft Visual C++编程经验总结》是一份由CSDN社区的众多网友共同汇集而成的珍贵资源,旨在为学习和使用Visual C++的开发者提供深入的编程指导和实用技巧。这份文档涵盖了C++语言的基础、高级特性,以及使用...

    C++builder实现网络连接检查

    总结,C++Builder通过Winsock库和ping命令可以轻松实现网络连接检查。开发者可以利用这些技术来检测应用程序运行时的网络状况,从而提供更好的用户体验。同时,动态库调用允许灵活地扩展和复用代码,提升软件的可...

    C++网络数据管理软件

    总结来说,C++网络数据管理软件融合了C++编程的灵活性和效率,以及网络通信和数据管理的专业技术。通过理解和运用上述知识点,开发者可以构建出高效、稳定且功能强大的网络数据管理解决方案。无论是从数据的获取、...

Global site tag (gtag.js) - Google Analytics