多路复用之select 之前在套接字编程中我们用了多线程和多进程的方法来编写,用它们编写的好处自然是稳定,而却非常耗资源,在前面的高级I/O博客中说到了另外一种方式那便是高效的多路复用方式了,它会一次等待多个满足条件的文件描述符,这里先介绍第一种多路复用方式select后面还会介绍比它更好的epoll和最好的多路复用方式epoll。
dup/dup2是两个用于指定文件操作符的方法,作用很相似,它是得两个文件描述符指向同一个file结构体,使file的引用计数为2,所以在使用的时候我们需要手动关闭另外一个不需要的。
socketpairsocketpair:相比较之前提到的管道,socketpair是一个全双工的通信方式,它的一端即可以读也可以写,对于它我是这样理解的:假设现在我们是在本地使用socketpair的,客户端为fd[0],服务器端为fd[1],当服务器向客户端写数据时,从fd[1]的写端写入数据,而从fd[1]的读端读取数据,反之从客户端上的操作也是如此。下面是实现的一个socketpair版本
I/O模型Unix下共有五种I/O模型:1>:阻塞I/O2>:非阻塞I/O3>:I/O多路复用4>:信号驱动I/O5>:异步I/O其中前四种是同步I/O模型,只有第五种是异步的。同步与异步:这里的同步和两个实体之间通信中的同步的概念是不一样的,这里的同步是指关于这个I/O中的一系列动作都需要自己来完成,无论你是原地等待事件的发生(阻塞)还是当某个事件已经准备好的时候你
端口号协议端口号: 端口号的全名就是协议端口号,它用于应用层和传输成的交互,在创建一个套接字的时候需要知道ip地址和端口号,这里的端口号它是虚拟的,运输层协议中我们知道端口号是一个十六位的整数,那么就表示了0到65535这么多的端口号,他到底有什么用处呢。 如果说ip是确定网络中的唯一一台主机的话,那么ip加端口号是确定网络中唯一一台主机中的唯一一个进程,注意端口号指具有本
基于TCP协议下的socket编程
TIME_WAIT状态: 在TCP连接中,主动关闭链接的一方会进入TIME_WAIT状态,它会保持长达2MSL周期的时间,为什么会保持这么长的时间上一篇博客中已经提到过了。如果server的最后一次ACKclient没有收到,client会重新发送一次fin这个时间是在2ML周期之间的,这个时候server还保持着TIME_WAIT的状态所以它会再次发送ACK确认,而如果不等待这么长时
TCP协议,TCP数据段头,三次握手,四次挥手,TIME_WAIT,TCP链接状态
代理服务器,作用,代理流程,分类...
NAT分类和利弊
一、基础知识1、linux操作系统,熟悉常用的指令。2、vim编译器的使用,Makefile的编写。3、用户以及权限方面相关的知识。4、linux下环境变量的概念。二、进程概念相关1、进程的概念,了解PCB的概念,以及task_struct结构体。2、进程的创建,fork()与vfork()的区别和联系。3、进程的等待,waitpid()与wait(),阻塞等待与非阻塞等待。4、进程的程序替换,e
守护进程守护进程又称作精灵进程是一个特殊的后台进程,他没有控制终端,周期性的执行该执行的任务我们可以看出守护进程是没有tty控制终端的,并且它是没有组长ID的。创建一个守护进程一般需要以下的步骤;1、umask(0)。2、fork()一个子进程,然后exit掉父进程,保证它不是组长进程。3、调用setsid()函数创建一个新会话,setsid保证(1)调用进程成为新会话首进程(2)调用进程成为进程
可重入函数与线程安全 线程安全:假如在一个函数中它是这么写的,在一个全局链表上存放数据,在单线程模式下,我们先new一个新的节点然后让head->next指向这个节点,这种场景在多线程场景下会是这样的过程,线程一new了一个节点
Linux信号,信号处理函数,信号调用过程
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号