2019-06-29 06:13
⁄ 工业·编程
⁄ 共 5111字
1.ACE:
ACE提供了一组丰富的可重用C++包装外观(WrapperFacade)和框架组件,可跨多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步等等。ACE简化了使用进程间通信、事件多路分离、显式动态链接和并发的面向对象的网络应用和服务的开发。
ACE架构图如图1-1所示:
ACE的优点主要有:
(1).增...
中间件, 网络编程阅读全文
2019-06-03 10:47
⁄ 工业·编程
⁄ 共 612字
protoBuf是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。与Protoful类似的序列化技术还有XML、JSON、Thrift等。
优点
与同类型的数据交换格式相比(诸如json,xml),由于protobuf是基于二进制数据传输格式,因此它具有高效的解析速度和更小...
Protobuf, 网络协议, 网络编程阅读全文
2019-06-01 05:12
⁄ 工业·编程
⁄ 共 3276字
1.选择路由
若要将数据包发至PC2,则linux系统通过查询路由表可知168.1.1.10(目的地址)的网关地址为192.168.1.1,此时linux系统选择网卡1发送数据包。
2.邻居子系统(通过arp协议建立起邻居的信息)
选择网卡1发送数据时,首先将数据包发给邻居(网关),再由邻居转发至后面,若要发送给邻居,则必须知道邻居的MAC地址,若不知道邻居的MAC地址,则需要通过arp请求包获取邻居的MAC地址。
Linux网络体系结构由以下五个部分...
linux, 网络编程阅读全文
2019-05-05 06:52
⁄ 工业·编程
⁄ 共 2126字
1、概述:
lwip是轻量型的TCP/IP实现,只需10几KB的RAM和40几KB的ROM就能够跑起来,适合应用于嵌入式设备的网络通信。有牛人Adam Dunkels发明,提供给用户上那种接口
RAW TCP/IP、Squential API, BSD API(也就是常说的socket编程),前者编程稍微复杂点,协议和应用程序在一个进程里面,但是效率高。中者首先要操作系统的支持,但是一旦实现了操作系统模拟层的实现,编程妥妥的。后者是为了符合人们使用socket编程的习惯而模...
lwip, 网络编程阅读全文
2019-05-04 06:49
⁄ 工业·编程
⁄ 共 16360字
——linux版本: 3.14.38
netlink支持用户进程和内核相互交互(两边都可以主动发起),同时还支持用户进程之间相互交互(虽然这种应用通常都采用unix-sock)
但是有一点需要注意,内核不支持接收netlink组播消息
本文将从用户进程发送一个netlink消息开始,对整个netlink消息通信原理进行展开分析
用户进程一般都通过调用sendmsg来向内核或其他进程发送netlink消息(有关sendmsg系统调用的公用部分代码解析将在另一片文章中展开)
&...
linux编程, netlink, 网络编程阅读全文
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共享的):
...
linux编程, netlink, 网络编程阅读全文
2019-05-02 06:36
⁄ 工业·编程
⁄ 共 6298字
内核版本:3.14.38
netlink是一种用于内核态和用户态进程之间进行数据传输的特殊的IPC机制。
特点:
1) 用户态采用socket风格的API
2) 除了预定义的协议类型之外,支持自定义协议类型
3) 异步通讯
4) 支持消息组播
4) 全双工(特别是支持内核主动发起会话)
netlink涉及的数据结构:
1) netlink地址...
linux编程, netlink, 网络编程阅读全文
2019-01-22 22:47
⁄ 工业·编程
⁄ 共 1293字
今天分享一个网络库选择的文章,当时我负责公司服务器的改造工作,需要选择一个适合的开源网络库。
欲使用开源网络库libevent、libev、libuv、IOCP、asio、muduo中的一个,经过对比分析,因本服务器系统目前于windows下运行,考虑到未来跨平台的支持,最终选定libevent开源网络库。
技术对比:
1.libevent
C语言跨平台,应用最广泛,历史悠久的跨平台事件库。这是一个用纯C写的开源库,属于一个轻量级的网络中间件。其中用到的...
libev, libevent, libuv, 网络编程阅读全文
2019-01-20 22:42
⁄ 工业·编程
⁄ 共 1457字
libuv 和 libev ,两个名字相当相近的 I/O Library,最近有幸用两个 Library 都写了一些东西,下面就来说一说我本人对两者共同与不同点的主观表述。
高性能网络编程这个话题已经被讨论烂了。异步,异步,还是异步。不管是 epoll 也好,kqueue 也罢,总是免不了异步这个话题。
libev 是系统异步模型的简单封装,基本上来说,它解决了 epoll ,kqueuq 与 select 之间 API 不同的问题。保证使用 livev 的 API 编写出的程序可以在大...
libev, libuv, 网络编程阅读全文
2019-01-18 22:39
⁄ 工业·编程
⁄ 共 1140字
[问]两个库都是为异步io调度而设计,在Linux上都是使用epoll机制,在FreeBSD上则都是kqueue,还有诸如此类的很多相通之处。
除了这些表面上的差别外,其实这两者根本的区别在哪里呢?比如架构上,或者设计哲学上。
[答]就设计哲学来说,libev的诞生,是为了修复libevent设计上的一些错误决策。例如,全局变量的使用,让libevent很难在多线程环境中使用。watcher结构体很大,因为它们包含了I/O,定时器和信号处理器。额外的组件...
libev, libevent, 网络编程阅读全文