现在位置: 首页 > 网络编程
1、概述: lwip是轻量型的TCP/IP实现,只需10几KB的RAM和40几KB的ROM就能够跑起来,适合应用于嵌入式设备的网络通信。有牛人Adam Dunkels发明,提供给用户上那种接口 RAW TCP/IP、Squential API, BSD API(也就是常说的socket编程),前者编程稍微复杂点,协议和应用程序在一个进程里面,但是效率高。中者首先要操作系统的支持,但是一旦实现了操作系统模拟层的实现,编程妥妥的。后者是为了符合人们使用socket编程的习惯而模...
阅读全文
2019-05-04 06:49 工业·编程 ⁄ 共 16360字 暂无评论
——linux版本: 3.14.38 netlink支持用户进程和内核相互交互(两边都可以主动发起),同时还支持用户进程之间相互交互(虽然这种应用通常都采用unix-sock) 但是有一点需要注意,内核不支持接收netlink组播消息 本文将从用户进程发送一个netlink消息开始,对整个netlink消息通信原理进行展开分析 用户进程一般都通过调用sendmsg来向内核或其他进程发送netlink消息(有关sendmsg系统调用的公用部分代码解析将在另一片文章中展开) &...
阅读全文
2019-05-03 06:41 工业·编程 ⁄ 共 12226字 暂无评论
——linux版本:3.14.38 目前为止,netlink协议族支持32种(MAX_LINKS)协议类型,其中已经被预定义的有22种。 在实际项目中,如果有定制化的需求时,最好不要去占用剩下的暂未定义的协议类型ID号,而是使用预定义的通用netlink协议类型NETLINK_GENERIC来进行扩展。 LINUX中跟netlink相关的核心代码位于net/netlink目录中,其中核心头文件主要有3个(这些都是所有协议类型的netlink共享的):       &#...
阅读全文
2019-05-02 06:36 工业·编程 ⁄ 共 6298字 暂无评论
内核版本:3.14.38 netlink是一种用于内核态和用户态进程之间进行数据传输的特殊的IPC机制。 特点:     1) 用户态采用socket风格的API     2) 除了预定义的协议类型之外,支持自定义协议类型     3) 异步通讯     4) 支持消息组播     4) 全双工(特别是支持内核主动发起会话) netlink涉及的数据结构:     1) netlink地址...
阅读全文
今天分享一个网络库选择的文章,当时我负责公司服务器的改造工作,需要选择一个适合的开源网络库。 欲使用开源网络库libevent、libev、libuv、IOCP、asio、muduo中的一个,经过对比分析,因本服务器系统目前于windows下运行,考虑到未来跨平台的支持,最终选定libevent开源网络库。 技术对比: 1.libevent C语言跨平台,应用最广泛,历史悠久的跨平台事件库。这是一个用纯C写的开源库,属于一个轻量级的网络中间件。其中用到的...
阅读全文
2019-01-20 22:42 工业·编程 ⁄ 共 1457字 暂无评论
libuv 和 libev ,两个名字相当相近的 I/O Library,最近有幸用两个 Library 都写了一些东西,下面就来说一说我本人对两者共同与不同点的主观表述。 高性能网络编程这个话题已经被讨论烂了。异步,异步,还是异步。不管是 epoll 也好,kqueue 也罢,总是免不了异步这个话题。 libev 是系统异步模型的简单封装,基本上来说,它解决了 epoll ,kqueuq 与 select 之间 API 不同的问题。保证使用 livev 的 API 编写出的程序可以在大...
阅读全文
2019-01-18 22:39 工业·编程 ⁄ 共 1140字 暂无评论
[问]两个库都是为异步io调度而设计,在Linux上都是使用epoll机制,在FreeBSD上则都是kqueue,还有诸如此类的很多相通之处。 除了这些表面上的差别外,其实这两者根本的区别在哪里呢?比如架构上,或者设计哲学上。 [答]就设计哲学来说,libev的诞生,是为了修复libevent设计上的一些错误决策。例如,全局变量的使用,让libevent很难在多线程环境中使用。watcher结构体很大,因为它们包含了I/O,定时器和信号处理器。额外的组件...
阅读全文
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. 简单的一问一答的服...
阅读全文