
网络编程
文章平均质量分 60
OpenSani
这个作者很懒,什么都没留下…
展开
-
Linux中write和writev的区别,write() vs writev()
Linux中write和writev()的区别:我觉得StackOverflow上面的回答写的很好,see: write vs writev下面是我自己的总结:函数原型:write#include <unistd.h>ssize_t write(int fd, const void *buf, size_t count);表示从buf开始的缓冲区向文件描述符fd所引用的文件写入count字节数。writev#include <sys/uio.h>ssize_t原创 2021-12-15 22:20:05 · 3704 阅读 · 0 评论 -
webserver项目里面涉及到的http知识
webserver项目里面涉及到的http知识HTTP 请求报文格式HTTP响应报文格式HTTP请求方法有限状态机HTTP 请求报文格式分为请求行,请求头,请求数据三部分,具体形式如下HTTP响应报文格式包括状态行,响应头,响应正文三部分HTTP请求方法HTTP/1.1 协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:GET:向指定的资源发出“显示”请求。使用 GET 方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在 Web Application原创 2021-12-15 19:45:11 · 1431 阅读 · 0 评论 -
网络编程里面什么是逻辑单元?
首先要了解一下服务器编程的基本框架:服务器程序种类繁多,但其基本框架都一样,不同之处在于逻辑处理。如下图所示:单元功能I/O 单元处理客户连接,读写网络数据网络存储单元存储数据,如数据库请求队列各单元之间的通信方式逻辑单元处理业务逻辑比如对于一个http服务器,他的逻辑单元就是处理http请求,其他涉及到IO操作(读写数据),存储(数据库)等不是他要干的事参考资料:Linux高性能服务器编程 游双...原创 2021-12-15 16:39:38 · 1715 阅读 · 0 评论 -
Reactor模式,Proactor模式以及采用Reator模拟Proactor模式详解,以及他们在网络IO处理中的应用
关于Reactor模式和Proactor模式原理性的详细介绍可以参见:如何深刻理解Reactor和Proactor? - 小林coding的回答 - 知乎不管是Reactor模式还是Proactor模式都是事件驱动模式,采用了面向对象的思想,如果是IO复用的方式实现高并发是基于面向过程的思想。Reactor模式是一种同步IO模式,什么是同步IO操作什么是异步IO操作可以参见UNP 卷1 P126:同步IO操作导致请求进程阻塞,直到IO操作完成。对于不同类型的IO模型(Linux下有四种,可以看我的原创 2021-12-13 21:04:49 · 1440 阅读 · 0 评论 -
Unix下的五种IO模型是什么?区别是什么?
Unix下有5种IO模型:阻塞IO针对阻塞IO的系统调用(如read, write)可能因为无法完成而被系统挂起,直到等待的事件发生为止。通俗的解释,用户进程(也有叫应用进程的)需要进行IO操作,如调用read,如果内核中的数据没有准备好,用户进程就阻塞,直到内核数据拷贝到了用户缓冲区,用户进程才返回。采用这种方式在需要进行IO的进程很多的时候,由于大部分的进程都是处于阻塞状态,会带来很大的进程切换开销,和内存开销。非阻塞IO针对非阻塞IO的系统调用总是立刻返回,不管事件是否发生,如果事件原创 2021-12-12 22:05:04 · 481 阅读 · 0 评论 -
Linux中的信号驱动IO模型是什么?有什么优势?
首先要开启套接字的信号驱动 IO功能,并通过sigaction系统调用安装一个信号处理函数,该系统调用立即返回,进程继续运行并不阻塞,当IO事件就绪(也就是数据报准备好读取时),内核为该进程产生一个SIGIO信号,进程收到SIGIO 信号,然后处理 IO 事件。这种IO模型的优势在于在等待数据的过程中进程可以不用阻塞,只要等待信号处理函数的通知。...原创 2021-12-12 20:11:45 · 622 阅读 · 0 评论 -
什么是IO多路复用?为什么需要IO多路复用?
首先,多路复用(multiplexing) 是计算机里面很常见的一个概念,我觉得他的核心思想就是利用一组资源做很多件事。常见的多路复用(multiplexing)除了网络编程里面的IO多路复用;还有计算机网络的时分多路复用,频分多路复用;还有操作系统里面的时间复用(Time multiplexing,指在多个用户之间安排连续可重用的资源如CPU ),空间复用(Space multiplexing ,将多用途资源分配给几个用户,如内存(虚拟内存),磁盘空间(文件系统))这里详见:https://sites.原创 2021-12-12 19:09:59 · 5622 阅读 · 0 评论 -
阻塞IO和非阻塞IO的区别
定义非官方定义:我个人理解阻塞就是执行系统调用的进程或者线程被挂起。阻塞IO:称阻塞的文件描述符为阻塞IO非阻塞IO:称非阻塞的文件描述符为非阻塞IOsee: Linux高性能服务器编程 游双 P126区别阻塞IO针对阻塞IO的系统调用(如read, write)可能因为无法完成而被系统挂起,直到等待的事件发生为止。举例:read和write,通常IO操作都是阻塞I/O的,也就是说当你调用read时,如果没有数据收到,那么线程或者进程就会被挂起,直到收到数据。坏处:see: I/O多路复原创 2021-12-12 11:26:02 · 7969 阅读 · 0 评论