开源免费的C/C++网络库(c/c++ sockets library)


开源免费的C/C++网络库(c/c++ sockets library)

(1)ACE

庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。

http://www.cs.wustl.edu/~schmidt/ACE.html

 

(2)Asio

Asio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。

开源、免费,支持跨平台。

http://think-async.com/

 

(3)POCO

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

http://pocoproject.org/

 

(4)libevent

Libevent是一个轻量级的开源高性能网络库,从它的官网标题:libevent-an event notification library就能知道它的机制是采用事件触发,封装了以下三种事件的响应:IO事件,定时器事件,信号事件。select模型来实现跨平台的操作,Windows环境下支持IOCP。Google的开源WEB浏览器Chromium在Mac和Linux版本中,也使用了Libevent,足见该库的质量。

http://libevent.org/

 

(5)libev

libev和libevent很像,按照作者的介绍,可以作为libevent的替代者,能够提供更高的性能。

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

http://software.schmorp.de/pkg/libev.html

 

(6)c++ sockets library

封装了sockets C API的C++类库。

支持SSL, IPv6, tcp 和 udp sockets, sctp sockets, http协议, 高度可定制的错误处理。

http://www.alhem.net/Sockets/

 

(7)libcurl

libcurl是免费的轻量级的客户端网络库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet, TFTP. 支持SSL, HTTP POST, HTTP PUT, FTP上传, HTTP form上传,代理,cookies, 用户名与密码认证。

如果你开发的是客户端,libcurl是一个不错的选择。

http://curl.haxx.se/libcurl/

 

 

 

看了之后觉得每个库都不错,这里我具体下载这些库看一下,简单总结一下;

顺便添加一些我找到的网络库;

 

(1)ACE

庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。

http://www.cs.wustl.edu/~schmidt/ACE.html

注:除非特别需要,否则不建议;

 

(2)Asio

Asio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。

开源、免费,支持跨平台。

http://think-async.com/

 注:要配置Boost库,还要熟悉Boost,还是麻烦;

 

(3)POCO

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

http://pocoproject.org/

注:没用过,看上面提示为 适合 嵌入式 开发;

 

(4)libevent

Libevent是一个轻量级的开源高性能网络库,从它的官网标题:libevent-an event notification library就能知道它的机制是采用事件触发,封装了以下三种事件的响应:IO事件,定时器事件,信号事件。select模型来实现跨平台的操作,Windows环境下支持IOCP。Google的开源WEB浏览器Chromium在Mac和Linux版本中,也使用了Libevent,足见该库的质量。

http://libevent.org/

注:看了倒是不错,还是有点麻烦;

 

(5)libev

libev和libevent很像,按照作者的介绍,可以作为libevent的替代者,能够提供更高的性能。

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

http://software.schmorp.de/pkg/libev.html

注:没看;

 

(6)c++ sockets library

封装了sockets C API的C++类库。

支持SSL, IPv6, tcp 和 udp sockets, sctp sockets, http协议, 高度可定制的错误处理。

http://www.alhem.net/Sockets/

注:看着功能不错,编译,应用还是有点麻烦;

 

(7)libcurl

libcurl是免费的轻量级的客户端网络库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet, TFTP. 支持SSL, HTTP POST, HTTP PUT, FTP上传, HTTP form上传,代理,cookies, 用户名与密码认证。

如果你开发的是客户端,libcurl是一个不错的选择。

http://curl.haxx.se/libcurl/

注:没看,放到这里,以后编写网络客户端的时候看看;

 

(8):C++ Socket Class for Windows ,http://www.adp-gmbh.ch/win/misc/sockets.html

 注:这个文章的文件不可以下载自己复制 保存 h 和 cpp文件;

        我用了一下,觉得很不错,也很简单,例子很明了; 不过有一个小小的缺点,只收发字符串,而且接收函数中的判断也有点不好;

       如果要用这个库传输文件等数据,需要 自己重载 收发函数,不过也很简单;

       这个不错,我会单独写一篇文章介绍;

 

(9):SimpleSockets,http://sockets.carrierlabs.com/index.html

                                 跨平台,支持 TCP ,UDP;

注:这个编译简单而且用起来也简单,目前考虑这个库;

http://blog.csdn.net/weiwangchao_/article/details/8730199

  • 3
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
精通Windows sockets网络开发是指掌握在Windows平台上使用sockets进行网络编程的技能。基于Visual C实现源码,可以使用Visual C++集成开发环境(IDE)进行开发。以下是大致的步骤和要点: 1. 准备工作:确保安装了Visual C++ IDE,了解基本的C++编程知识和Windows操作系统的网络概念。 2. 创建项目:在Visual C++中创建一个新的空项目,并选择一个合适的名称。 3. 导入相关头文件和:在项目中包含Winsock2.h头文件,并链接Ws2_32.lib,以便在程序中使用Windows sockets相关函数和结构。 4. 初始化Winsock:在程序开始时,调用WSAStartup函数初始化Winsock。 5. 创建套接字:使用socket函数创建一个套接字,指定套接字的类型和协议。常见的类型有TCP套接字(SOCK_STREAM)和UDP套接字(SOCK_DGRAM)。 6. 绑定套接字:使用bind函数将套接字绑定到指定的本地IP地址和端口号。 7. 监听连接请求(TCP):如果是TCP套接字,可以使用listen函数开始监听连接请求。 8. 接受连接请求(TCP):使用accept函数接受客户端的连接请求,并返回一个新的套接字,用于与客户端进行通信。 9. 发送和接收数据:使用send和recv函数向客户端发送数据和接收数据。 10. 关闭套接字:使用closesocket函数关闭套接字。 11. 清理Winsock:在程序结束时,调用WSACleanup函数清理Winsock的资源。 以上是一个基本的网络编程流程,可以根据具体需求进行相应的开发和调整。要成为精通Windows sockets网络开发,需要积累实际项目经验和深入理解网络协议和原理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值