现在位置: 首页 > 网络编程
2019-01-16 22:37 工业·编程 ⁄ 共 634字 暂无评论
Libevent、libev、libuv三个网络库,都是c语言实现的异步事件库Asynchronousevent library)。 异步事件库本质上是提供异步事件通知(Asynchronous Event Notification,AEN)的。异步事件通知机制就是根据发生的事件,调用相应的回调函数进行处理。 事件(Event):事件是异步事件通知机制的核心,比如fd事件、超时事件、信号事件、定时器事件。有时候也称事件为事件处理器(EventHandler),这个名称更形象,因为Handler本身...
阅读全文
本文简单的说一下 libev 的 使用关键点。     libev 是一种高性能事件循环 / 事件驱动库。作为 libevent 的替代作品,由于其支持linux,而且其作者声称其相比libevent速度更快,代码更少,所以我们在嵌入式linux中采用 libev。     libev 同样需要循环探测事件是否产生。Libev 的循环体用 ev_loop 结构来表达,并用 ev_loop( ) 来启动。 void ev_loop( ev_loop* loop, int flags )    ...
阅读全文
    libev目前最典型的应用场景可能就是 网络服务器的 编程框架中,常规的 网络服务器编程都是 从 bind()、listen()、accept()、read()等接口开始的,标准的 socket 编程套路,不管Windows还是linux都是一样的,这些标准的接口,可以方便的构建 服务器/ 客户机的模型的。假设我们希望建立一个简单的服务器程序,实现向单个客户端提供 “一问一答”的内容服务。 单线程、阻塞型网络编程 图 1. 简单的一问一答的服...
阅读全文
2018-06-09 05:47 工业·编程 ⁄ 共 1086字 暂无评论
抓包 先从熟悉的下手,HTTP,FTP。 封装包  自己封装包,和现有协议通信。TCP/IP协议作为一个底层协议,不仅可以编写聊天程序,很多高层协议都是基于TCP/IP编写的。 自己造轮子,这样也有助于理解其它协议,比如连接、查询MySQL(用Socekt函数而不是库函数),自己封装一个memched函数库… 以前我大学时用perl发送“飞鸽传书”包,经常上课的时候同学们集体收到弹出信息,却不知道发送者是谁,很有成就感。如果你做已经事没有...
阅读全文
2018-05-19 22:41 工业·编程 ⁄ 共 458字 暂无评论
一 混杂模式基本概念 一般情况下,网卡往往只会接收目的地址是它的数据包而不会接收目的地址不是它的数据包。 混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包。默认情况下,网卡只把发给本机的包(包括广播包)传递给上层程序,其他的包一律丢弃。 混杂模式就是指网卡能接受所有通过它的数据流,无论是什么模式、什么地址的。当网卡处于这种“混杂”模式时,它对所有遇到的每一个数据帧都产生一个硬件中断,以提醒...
阅读全文
2018-01-21 18:06 工业·编程 ⁄ 共 589字 暂无评论
1、Google https://github.com/grpc/grpc https://github.com/google/protobuf http://doc.oschina.net/grpc 2、thrift http://thrift.apache.org/ http://thrift.apache.org/lib/ http://thrift.apache.org/lib/cpp https://github.com/apache/thrift 3、Tencent 腾讯微服务框架Tars介绍 https://github.com/TarsCloud/Tars https://github.com/TarsCloud/TarsCpp https://github.com/TarsCloud/TarsGo https://github.com/lov...
阅读全文
2017-09-05 06:22 工业·编程 ⁄ 共 3687字 暂无评论
1、C10K问题的由来 大家都知道互联网的基础就是网络通信,早期的互联网可以说是一个小群体的集合。互联网还不够普及,用户也不多,一台服务器同时在线100个用户估计在当时已经算是大型应用了,所以并不存在什么 C10K 的难题。互联网的爆发期应该是在www网站,浏览器,雅虎出现后。最早的互联网称之为Web1.0,互联网大部分的使用场景是下载一个HTML页面,用户在浏览器中查看网页上的信息,这个时期也不存在C10K问题。 Web2.0时代...
阅读全文
对笔者而言,这是一个挺新的领域,比较有意思。 一、解释名词: NFV(Network Function Virtualization):通过使用x86等通用性硬件以及虚拟化技术,来承载很多功能的软件处理。从而降低网络昂贵的设备成本。 这项技术的目的在于软硬件的解耦合,让网络设备功能不再依赖于底层硬件,为啥呢,因为硬件研发周期长,贵啊。 DPDK(Intel Data Plane Development Kit):Intel数据面开发包,它是一组快速处理数据包的开发平台接口...
阅读全文
2017-08-22 06:14 工业·编程 ⁄ 共 2004字 暂无评论
    一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本文阐述了Linux环境下的几种主要进程 间通信手段,并针对每个通信手段关键技术环节给出详细实例。为达到阐明问题的目的,本文还对某些通信手段的内部实现机制进行了分析。     linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做 出重大贡献的两大主力AT&a...
阅读全文
2017-08-15 06:09 工业·编程 ⁄ 共 236字 暂无评论
sysv是早期实践中弄出来的,posix是后来标准化之后的产物。这个导致了posix的接口设计更加严谨完善,但特殊情况下处理消息不及sysv灵活 posix ipc的那套接口做到了线程安全,sysv的就不见得了 如果你只考虑在linux上开发,就选posix那套就行了,还能和select/poll这些好东西一起用 如果还要考虑其他平台的兼容性,那就具体情况具体分析了,有些平台上有些库对posix实现的完整程度还不如sysv。 具体可参考《UNIX网络编程 卷2:进...
阅读全文