Linux 网络 I/O 模型简介(图文)(转载) 转载:http://blog.csdn.net/anxpp/article/details/51503329 1.介绍 Linux 的内核将所有外部设备都看做一个文件来操作(一切皆文件),对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd,文件描述符).而对一个socket的读写也会有响应的描述符,称为socket fd(socket文件描述符),描述符就是一个数字,指向内核中的一个结构体(文件路径,数据…
1.介绍 Linux 的内核将所有外部设备都看做一个文件来操作(一切皆文件),对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd,文件描述符).而对一个socket的读写也会有响应的描述符,称为socket fd(socket文件描述符),描述符就是一个数字,指向内核中的一个结构体(文件路径,数据区等一些属性). 根据UNIX网络编程对I/O模型的分类,UNIX提供了5种I/O模型. 1.1.阻塞I/O模型 最常用的I/O模型,默认情况下,所有文件操作都是…
参考文章: 简书-浅谈Linux五种IO:http://www.jianshu.com/p/486b0965c296 一.linux基础概念 1.1 内存空间 linux系统中的使用的是虚拟存储器,即操作系统(kernel)可以使用的内存空间不是物理空间,而是线性空间,内存是以页的方式进行管理.kernel是一个特殊的程序,如果从内核的角度去看操作系统,一些比如系统调用这样比较核心的功能只有kernel才有权限去使用,用户程序想要调用比如先通过kernel(内核),比如说用户程序想要和硬件进行交…
Unix网络 I/O 模型   我们都知道,为了操作系统的安全性考虑,进程是无法直接操作I/O设备的,其必须通过系统调用请求内核来协助完成I/O动作,而内核会为每个I/O设备维护一个buffer.以下是其示意图: 注:一个输入操作通常包括两个不同的阶段: (1)等待数据准备好: (2)从内核进程向用户进程复制数据   整个请求过程为: 用户空间进程发起请求,内核进程接受到请求后,从I/O设备中获取数据到buffer中,再将buffer中的数据copy到用户进程空间中,该用户进程获取到数据后再响应…
以下是原文地址,转载请指明出处: http://blog.chinaunix.net/uid-26495963-id-3230810.html 一.配置文件详解在RHEL或者CentOS等Redhat系的Linux系统里,跟网络有关的主要设置文件如下: /etc/host.conf         配置域名服务客户端的控制文件/etc/hosts             完成主机名映射为IP地址的功能/etc/resolv.conf       域名服务客户端的配置文件,用于指定域名服务器的位置…
准备写一个网络游戏的服务器的通讯模块,参考网上看到的一些代码,在linux下面实现一个多线程的epoll模型的socket通讯的代码,以下是第一部分多线程的切换代码: 1 #include <stdio.h> #include <sys/types.h> #include <sys/epoll.h> #include <sys/socket.h> #include <signal.h> #include <fcntl.h> #incl…
同步与异步:         同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成.         异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了,异步一般使用状态.通知和回调.   阻塞与非阻塞         阻塞是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务.        非阻塞是指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会…
wget 是一个命令行的下载工具.对于我们这些 Linux 用户来说,几乎每天都在使用它.下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使用 wget. $ wget -r -np -nd http://example.com/packages/ 这条命令可以下载 http://example.com 网站上 packages 目录中的所有文件.其中,-np 的作用是不遍历父目录,-nd 表示不在本机重新创建目录结构. $ wget -r -np -nd --accept=…
前言 本文是笔者的第一篇博文,在这篇文章的大部分内容基于steven大神的<Unix Network Programming>.一来是对书本内容的整理与归纳.二来也是为接下来的博文奠定基础. 在实际应用中,数据操作通常分为输入和输出,那么以输入为例,在操作系统中,一个数据的输入通常分为以下两个过程: 等待数据准备好. 将准备好的数据从内核拷贝到用户空间      下面我们将会分别讨论 I/O 模型中的两个大类,即 同步 I/O 与 异步 I/O. 图 1. 基本I/O 模型的简单矩阵 同步阻塞…
Linux网络编程组播测试代码 (转载)   组播客户端代码如下: #include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <stdio.h>#include <stdlib.h>#include <string.h> #define BUFLEN 255int main(int argc, char **argv){struct sock…