当前位置: 首页 > 编程日记 > 正文

Linux下常用的C/C++开源Socket库

1.      Linux Socket Programming In C++ : http://tldp.org/LDP/LG/issue74/tougher.html

2.      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简洁,学习成本底。

注:以上内容整理自网络!

相关文章:

前端技术选型的遗憾和经验教训

我是Max,Spectrum的技术联合创始人。Spectrum 是一个面向大型在线社区的开源聊天应用程序,最近被GitHub收购。我们是一个三人团队,主要拥有前端和设计背景,我们在这个项目上工作了近两年时间。 事后看来,以下是我做出的…

时间序列的建模新思路:清华、李飞飞团队等提出强记忆力E3D-LSTM网络

作者 | Yunbo Wang,、Lu Jiang、 Ming-Hsuan Yang、Li-Jia Li、Mingsheng Long、Li Fei-Fei译者 | 凯隐编辑 | Jane出品 | AI科技大本营(ID:rgznai100)【导读】如何对时间序列进行时空建模及特征抽取,是RGB视频预测分类&#xff0…

了解node.js

转载自http://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb 当我向人们介绍node.js时,通常会得到两种反应,一种人马上就能了解,另一种则是非常困惑。 如果你是第二种人,请看一下我对node的解…

VS2013中Image Watch插件的使用(OpenCV)

之前在vs2010中写OpenCV程序时经常用NativeViewer,安装此插件后,在调试代码时,对于cv::Mat变量,CV_TYPE类型为CV_8UC1或CV_8UC3,可以随时查看显示结果。其操作步骤为:1. 从http://sourceforge.net/p…

【spring boot2】第8篇:spring boot 中的 servlet 容器及如何使用war包部署

嵌入式 servlet 容器 在 spring boot 之前的web开发,我们都是把我们的应用部署到 Tomcat 等servelt容器,这些容器一般都会在我们的应用服务器上安装好环境,但是 spring boot 中并不需要外部应用服务器安装这些servlet容器,spring …

让织梦内容页arclist标签的当前文章标题加亮显示

很多人在用织梦做站的时候,会用到在当前栏目页面,给当前栏目标题使用指定样式如标题加亮,或者放个背景图。这是一个很常用和实用的功能,比如在导航页面,标识当前在浏览哪个栏目。如下图: 但是有些时候&…

RHEL6入门系列之九,常用命令2

今天还是继续来学习Linux的基本命令。4、touch命令——建立空文件touch命令用于建立空文件。[rootlocalhost ~]# mkdir /root/test ‘创建目录/root/test[rootlocalhost ~]# touch /root/test/test1.txt ‘在目录/root/test中创建空文件test1.txt[rootlocalhos…

为什么华为200万招聘AI博士,马斯克却推出脑机接口对抗AI?

作者 | 伍杏玲来源 | CSDN(ID:CSDNnews)7 月,华为一则薪资通知刷爆朋友圈:华为给8位博士应届生给予 89.6 万至 201 万的年薪。其中薪资最高的两位博士均研究人工智能相关专业。7 月还有一件大事:马斯克发布…

Artistic Style在windows下的使用(C/C++)

ArtisticStyle是一个开源的源代码格式化工具。主页地址为:http://astyle.sourceforge.net/,它可以应用在C、C、Objective-C、C#、Java等程序语言中。http://astyle.sourceforge.net/astyle.html中为对使用它的详细介绍。从http://sourceforge.net/projec…

ESXi主机与网络中其他主机的网咯数据包捕获

1、tcpdump-uw -i vmk0 -s 1514 host x.x.x.x 指定捕获与某台主机间的网络数据包2、tcpdump -i vmk0 -s 1514 port not 22 and port not 53 在捕获的数据包中,过滤掉指定端口的数据包3、tcpdump-uw -i vmk0 -s 1514 -w traffic.pcap 捕获的数据包保存成PCAP文件&…

Windows下批处理文件(.bat)的使用

批处理(Batch),就是进行批量的处理,英文译文BATCH,批处理文件后缀BAT就取的前三个字母,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件是扩展名为.bat或.cmd的文本文件,包含一条或…

金融业加速智能化,解析360金融AI基础架构和应用

传统金融信贷业务中,催收、客服及电销人员占比超过 60%,人员素质参差不齐的现状造成了管理成本过高的问题,由此衍生的客户体验差,也成为困扰金融业的一大通病。 8 月 15 日,在 360金融 AI 媒体开放日上,360…

正则:匹配一个汉字姓名

//汉字姓名正则var reg/^[\u4e00-\u9fa5]{2,}(\.[\u4e00-\u9fa5])?$/console.log(reg.test(张卫健.爱新觉罗))console.log(reg.test(兔子)) 复制代码

NLP命名实体识别开源实战教程 | 深度应用

作者 | 小宋是呢来源 | CSDN博客近几年来,基于神经网络的深度学习方法在计算机视觉、语音识别等领域取得了巨大成功,另外在自然语言处理领域也取得了不少进展。在NLP的关键性基础任务—命名实体识别(Named Entity Recognition,NER…

poj 2063完全背包

题意:给出总资金和投资年份 ,n个股票 给出股票价格和其一年的利润。问如何选择能获得最大利润。 思路:股票可以重复选择,完全背包问题,完全背包也是从01背包衍生而行的,其主要区别在于中间那层循环的次序不…

UTF-8 CPP的使用

UTF-8 CPP是一个简单、小巧、轻量级、跨平台的UTF-8编码字符串库。下面对其使用方法进行简单的介绍:1. 从http://sourceforge.net/projects/utfcpp/下载最新的utf8_v2_3_4.zip源码,将其解压缩;2. 新建一个vs2013 控制台工程TestUTF…

一行js代码识别Selenium+Webdriver及其应对方案

有不少朋友在开发爬虫的过程中喜欢使用Selenium Chromedriver,以为这样就能做到不被网站的反爬虫机制发现。 先不说淘宝这种基于用户行为的反爬虫策略,仅仅是一个普通的小网站,使用一行Javascript代码,就能轻轻松松识别你是否使用…

Android系统移植与调试之-------如何修改Android设备添加重启、飞行模式、静音模式等功能(一)...

1、首先先来看一下修改前后的效果对比图 修改之后的图片 确认重启界面 具体的修改内容在下一篇中具体介绍。 Android系统移植与调试之------->如何修改Android设备添加重启、飞行模式、静音模式等功能(二) 作者:欧阳鹏 欢迎转载&#xf…

鸿蒙霸榜GitHub,从最初的Plan B到“取代Android”?

整理 | 郭芮出品 | CSDN(ID:CSDNnews)距离 8 月 9 日鸿蒙(HarmonyOS)正式发布刚刚过去九天,这场由华为领衔的技术风暴,经过十年蛰伏,终于成功引爆全球。与此同时,一个非官…

CODING 最佳实践:快课网研发效能提升之路

快课企业移动学习平台是上海快微网络科技有限公司自主研发的企业级 SaaS 平台,提供移动学习、考试练习、培训管理、知识分享、统计分析等学习和培训功能,为员工、经销商及客户等全价值链合作伙伴提供全面的知识服务。本文将详细介绍快课网的研发团队是如…

基于chyh1990/caffe-compact在windows vs2013上编译caffe步骤

1. 从https://github.com/chyh1990/caffe-compact下载caffe-compact代码; 2. 通过CMake(cmake-gui)生成vs2013 x64 caffe工程; 3. 从https://github.com/google/protobuf下载ProtoBuf,解压缩,编译ProtoBuf&#xf…

菜鸟学***——菜鸟的旅程

第一章.菜鸟的旅程作为一个典型的菜鸟,第一次去网吧上网我不知道怎么开机是很正常的事情,但是无论怎么菜怎么无知也无法阻止我对于***的崇拜,我喜欢他们的那种神秘和在我们普通人眼中的无所不能,在网络世界里他们就想鱼…

程序员假冒AI,印度公司竟骗取2亿元投资

作者 | 神经小姐姐来源 | HyperAI超神经(ID:HyperAI)人工智能界有句调侃的话——「有多少智能,就有多少人工」,今天,印度的一家人工智能公司就印证了这句话。据《华尔街日报》报道,印度创业公司…

Windows7上使用VS2013编译Caffe源码(不带GPU支持)步骤

1. 从https://github.com/BVLC/caffe/通过git clone下载caffe源码,master分支,版本号为09868ac:$ git clone https://github.com/BVLC/caffe.git ;2. 先使用cmake-gui构建生成vs2013工程,发现有很多错误,提示缺少各种依…

区块链之比特币的潜在激励

想知道更多区块链技术知识,请百度【链客区块链技术问答社区】链客,有问必答!! 比特币,这个建立在开放P2P(点对点)网络结构之上的货币(文献9),继续享受人们的追…

每天超50亿推广流量、3亿商品展现,阿里妈妈的推荐技术有多牛?

作者 | 夕颜出品 | AI科技大本营(ID:rgznai100)随着深度学习、强化学习、知识图谱、AutoML 等 AI 技术出现更多突破,推荐系统领域的企业和开发者开始将这些技术与传统推荐算法相结合,使得推荐效果得到显著提升。不过,越…

常用的JQuery数字类型验证正则表达式

var regexEnum { intege:"^-?[1-9]//d*$", //整数 intege1:"^[1-9]//d*$", //正整数 intege2:"^-[1-9]//d*$", //负整数 num:"^([-]?)//d*//.?//d$", //数字 num1:"^([1-9]//d*|0)$", //正数&#xff…

Java多线程编程实战:模拟大量数据同步

背景 最近对于 Java 多线程做了一段时间的学习,笔者一直认为,学习东西就是要应用到实际的业务需求中的。否则要么无法深入理解,要么硬生生地套用技术只是达到炫技的效果。 不过笔者仍旧认为自己对于多线程掌握不够熟练,不敢轻易应…

Ubuntu中Atom编辑器显示中文乱码的处理方法

在Ubuntu14.04 64位机上安装Atom,依次在终端输入如下命令: 1. $ sudo add-apt-repository ppa:webupd8team/atom 2. $ sudo apt-get update 3. $ sudo apt-get install atom处理中文乱码的问题: 1. 安装文泉驿正黑等相关中文字体&#…

我的世界游戏安装

2019独角兽企业重金招聘Python工程师标准>>> Minecraft 是一款沙盘独立视频游戏,灵感来自于Infiniminer,使用Java编写,由Markus "Notch" Persson 所建立,现由Mojang AB 公司开发。 这里我们介绍如何在pcDuin…