1、socket编程
1.1 流套接字
1.2 报文套接字
1.3 原始套接字
1.4 三种套接字区别
常用场景:
2、异步socket如果在一个.c文件实现同步通信呢?
实现:
3、select和accept有什么区别?
select: 监听最大描述符,读写描述符集,异常描述符,超时时间
accept: 监听套接字,接收连接地址,接收结构长度
补充:
FD_ZERO: 清空
FD_SET:加入(读数据套接字)
FD_ISSET:检查s是否在这个集合
FD_CRL:将s从set清除
4、select、poll和epoll函数的区别?
5、IO:对数据的访问和读取,网卡,寄存器,内存
第一类:阻塞IO:一次请求,一次数据返回
用户 ----------------------------------------------------内核
线程 —发起数据请求----阻塞/等待----》数据准备(IO操作)
结束阻塞–《------数据拷贝-----准备好-------
第二类:非阻塞IO:多次请求,一次数据返回
用户---------------------------------------------------------------内核
线程—发起数据请求(一次)----------不等待------》数据准备(IO操作)
《------返回error------------没有-----
—发起数据请求(二次)----------不等待------》
《------返回error------------没有----
—发起数据请求(三次)----------不等待------》
《------数据拷贝-----准备好-----
第三类:多路复用IO
用户--------------------------------------------------------------------内核
线程-----------select/poll/epoll–监视所有socket--------》系统调用
《-----------数据拷贝------------准备好-------
第四类:异步IO
用户--------------------------------------------------------内核
线程–aio-read--------------------------------------》系统调用
《-------------不阻塞,立即返回---------------数据准备
执行下面操作《--------数据拷贝-----------------