- 浏览: 228345 次
- 性别:
- 来自: 北京
最新评论
-
qq452739204:
如果构造的报文大于mtu值,是否需要分片之后再发送出去列?
Linux内核构造数据包并发送(二)(dev_queue_xmit方式) -
xingzengmou:
你好,我搞的原理跟你差不多,但播放的时候有papapa的声音, ...
AudioRecord和AudioTrack类的使用 -
wenjiefeng:
楼主,你有录制pcm格式和播放pcm格式的录音器的demo吗, ...
AudioRecord和AudioTrack类的使用 -
lovepeakingA:
...
AudioRecord和AudioTrack类的使用 -
ZaneLee007:
假的,不学无术
Android禁用键盘的所有按键
文章列表
参看:
http://www.linuxjournal.com/article/6345
http://www.ibm.com/developerworks/cn/java/j-zerocopy/index.html
http://blog.chinaunix.net/u/5251/showart_411109.html
1.传统的报文捕获实现过程1.1 协议栈运行机制分析当操作系统协议栈正常工作时,应用程序只 ...
原型:
#include <sys/sendfile.h>
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);
说明:
第 1 个参数 out_fd,在 2.6 内核里,必须指向一个 socket 。第 2 个参数 in_fd,是一个要拷贝文件的文件描述服。第 3 个参数 offset, 是一个偏移量,它在不断的 sendfile 中,这个偏移量会随着偏移增加,直到文件发送完为止,当然在程序中需要用如 while() 这样的语句来控制。第 4 个参数 count,表示要传送的字节 ...
最近在搞zerocopy的东西,看到了这篇文章,拷过来备用!
转自:http://www.groad.net/bbs/simple/?t2276.html
本文整理来自:http://www.linuxjournal.com/article/6345?page=0,0
一、什么是“零拷贝”
零拷贝(zero-copy)基本思想是:数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现CPU的零参与,彻底消除CPU在这方面的负载。实现零拷贝用到的最主要技术是DMA数据传输技术和内存区域映射技术。先看普通网络服务守护进程的一般服务方法:
read(fi ...
队列简介:
队列(Queue)是一种数据结构,可以在队列的一端插入元素而在队列的另一端删除元素。
( 1 )允许删除的一端称为 队头( Front ) 。 ( 2 )允许插入的一端称为 队尾( Rear ) 。 ( 3 )当队列中没有元素时称为 空队列 。 ( 4 )队列亦称作先进先出( First In First Out )的线性表,简称为 FIFO 表 。
队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(即不允许 " 加塞 " ),每次离开的成员总是队列头上的(不允许中途离队),即当前 " 最老的 " 成员离队 ...
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define SIZE 5;
#define LEN sizeof(struct node)
typedef struct node {
char name[20];
struct node *next;
} nodes;
nodes *createNewNodes(void) {
printf("创建新链表\n");
nodes *p; ...
相信绝大多数都学习过《数据结构》这门课程,而对这门课程里最熟悉的应该是堆栈和队列。本人前段时间买了一本有关算法(C语言实现)的书,发现其中对循环队列这一结构的算法存在漏洞,故写此文与大家交流探讨。
首先提一下循环队列的概念:队头指针head,队尾指针tail。
很显然,当队列满后,即便全部元素都出队,队列还是满的状态。这种情况就叫做“假溢出”,即数组中明明有可用空间,但却无法使用。
这是由定长数组的特性决定的。但我们可用改变一下思路,当队尾指针指向数组最后一个位置时,如果再有数据入队,并且队头指针没有指向数组的第一个元素,那么就让队为指针绕回到数组头部。这样就形成了一个 ...
进程是Linux资源分配的对象,Linux会为进程分配虚拟内存(4G)和文件句柄等资源,是一个静态的概念。线程是CPU调度的对象,是一个动态的概念。一个进程之中至少包含有一个或者多个线程。这些线程共享该进程空间的内存和文件句柄资源,多个线程竞争地获得这些资源。为了防止多个线程访问资源的不一致性,多线程编程一个很重要的任务就是控制好线程同步。本文简单介绍一下Linux的同步对象和使用时的一些注意事项。
1、互斥量(Mutex)
互斥量本质上讲是一把锁,该锁保护一个或者一些资源(内存或者文件句柄等数据)。一个线程如果需要访问该资源必须要获得互斥量,并对其加锁。这时如果其他线程如果 ...
自动变量
什么是自动变量呢?自动变量就是指在函数内部定义使用的变量。他只是允许在定义他的函数内部使用它。在函数外的其他任何地方都不能使用的变量。自动变量是局部变量,即它的区域性是在定义他的函数内部 ...
系统
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查 ...
库的作用
大体上库的存在,有两方面的原因,一是代码的复用,二是声明和实现的分离。将功能相近的使用模块封装成库,使代码的复用、管理和分发变得简单了许多,例如著名的开源图形库ncurses,你可以自行编译,更可以直接使用已经编译好的现成的库文件。另外,由于库是二进制文件,某种意义上讲,将功能的实现部分隐藏了起来,这就为商业代码的保护提供了一种方式。 库文件按照链接方式和时机,可以分为动态库和静态库,下面分别介绍它们在Linux环境中的创建和使用方法。
静态链接库
静态库是指在程序的链接阶段,其中被用到的代码会被直接链接到可执行文件中的库。静态链接的可执行程序包含了其所需的全部库 ...
这是一个自动关机的小程序。该程序可以守护进程的方式运行,当用户在一定时间(比如30分钟)没有鼠标和键盘操作后就会自动关机。。 由于需要同时监听鼠标和键盘操作,所以需要采用多线程的方式来实现。其中两个线程分别监视鼠标和键盘,一旦检测到相应动作(鼠标点击和移动、击键等),全局时间戳stamp(time_t)就会被设成当前时间。主线程每隔一定时间(比如1秒)检查stamp,若当前时间值(time(NULL))比stamp大30*60,则执行停机操作(使用system函数执行init 0命令,或者使用reboot函数)。
#include <stdio.h>
#includ ...
几乎所有的 Linux 发行版本都包含 ipcs
命令,该命令可以提供当前加载到系统上的IPC 资源信息。通过 ipcs 可以确定系统的当前 IPC
限制,还可以检查系统当前使用的上述三类IPC资源的状态。例如,假若应用程序启动失败,可以检查系统上的
IPC使用情况来判断是否已超出了某个IPC限制。为了确定系统的IPC资源状态,可以在 root用户权限下执行带有-u 选项的 ipcs 命令。
# ipcs -u ------ Shared Memory Status -------- segments
allocated 32 pages allocated 2361 ...
stdarg.h是C语言中C标准函数库的头文件,stdarg是由stdandard(标准) arguments(参数)简化而来,主要目的为让函数能够接收不定量参数。 C++的cstdarg头文件中也提供这样的机能;虽然与C的头文件是兼容的,但是也有冲突存在。
不定参 ...
1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。
2 问题:extern 变量 在一个源 ...
网络编程(7)
7. TCP/IP协议
你也许听说过TCP/IP协议,那么你知道到底什么是TCP,什么是IP吗?在这一章里面,我们一
起来学习这个目前网络上用最广泛的协议.
7.1 网络传输分层
如果你考过计算机等级考试,那么你就应该已经知道了网络传输分层这个概念.在网络上
,人们为了传输数据时的方便,把网络的传输分为7个层次.分别是:应用层,表示层,会话层
,传输层,网络层,数据链路层和物理层.分好了层以后,传输数据时,上一层如果要数据的
话,就可以直接向下一层要了,而不必要管数据传输的细节.下一层也只向它的上一层提供
数据,而不要去管其它东西了.如果你不想考试,你没有必 ...