socket -- 22




1 2 3

200x200


概述此前我们已经介绍过 TCP 相关的很多内容了:TCP/IP 协议族简介TCP连接的建立和终止基本TCP套接字函数 尽管 TCP 和 UD

#读书笔记    #技术帖    #tcp    #udp   

200x200


nginx 连接池事件模块初始化 过程中创建了连接池以及 read_events 和 write_events 数组,那么 nginx 连接池究竟是一个什么样的结构呢?  &nbs

#技术帖    #socket    #龙潭书斋    #nginx   

200x200


nginx 相对于 apache 的优点轻量级ngxin 相对于 apache 来说,占用资源更少,这是高度模块化设计的优势nginx&nb

#技术帖    #linux    #unix    #apache   
问题描述开始阅读 nginx 源码的时候就一直伴随着一个问题,那就是多进程的 nginx 模型是怎么保证多个进程同时写入一个文件不发生数据交错呢?猜想中,主要有以下几种解决方案:最传统的,正在写文件的进程加锁,其他进程等待,但是这样的情况是绝对不允许的,效率太过低下写 log 前测试锁状态,如果已经锁定,则写入进程自己的缓冲区中,等待下次调用时同步缓冲区,这样做的好处是无需阻塞,提高了效率,但是就无法做到 log 的实时了,这样做工程中也是绝对无法接受的,一旦发生问题,将无法保证 log 是否已经被写入,因此很难定位一个进程专门负责写 log,其他进程通过域套接字或者管道将 log 内容发送给他,他持续阻塞在 epoll_wait 上,直到收到信息,立即写入,但是众所周知,nginx 是调用同一个函数启动所有进程的,并没有专门调用函数启动所谓的 log 进程,除了 master 和 worker,nginx 也确实没有 log 进程存在那么就是进程启动后,全部去竞争某个锁,竞争到该锁的 worker 执行 log&n
#技术帖    #linux    #unix    #socket   

200x200


最简单的进程之间传递信息的方式是通过 fork 或 exec 传送已打开的文件,或两进程通过打开相同的文件来进行数据的共享进程之间通信还有其他技术 -

#读书笔记    #技术帖    #linux    #unix   

200x200


概述看到了一个小型的 http server,/* J. David's webserver {{{ */ /* This is a simple webserver. * C

#技术帖    #c语言    #socket    #服务器   

200x200


概述UDP 是无连接、不可靠的数据报协议,而 TCP 是面向连接的可靠字节流协议,他们具有非常大的差异DNS、NFS 和 DNMS 等领域,

#读书笔记    #技术帖    #linux    #unix   
函数简介fcntl 函数可执行各种描述符控制操作ioctl 函数则对 io 操作定义了各种控制操作小结fcntl、ioctl 和路由套接字操作小结操作fcntlioctl路由套接字POSIX规定首选方案设置套接字为非阻塞IO型F_SETFL, O_NONBLOCKFIONBIO fcntl设置套接字为信号驱动IO型F_SETFL, O_ASYNCFIOASYNC fcntl设置套接字属主F_SETOWNFIOCSPGRP 或 FIOSETOWN fcntl获取套接字属主F_GETOWNFIOCGPGRP 或 FIOGETOWN fcntl获取套接字接收缓冲区中的字节数 FIONREAD  测试套接字是否处于带外标志 SIOCATMARK sockatmark获取接口列表 SIOCGIFCONFsysctl 接口操作 SIOC[GS]IFxxx  ARP高速缓存操作 SIOCxARPRTM_xxx 路由表操作 SIOCxxxRTRTM_xxx 函数原型这里我们主要讨论 fcntlint fcntl(int fd, int cmd, ... /* arg */
#读书笔记    #技术帖    #linux    #unix   
描述符传递进程间通信的另一种方式是直接使用已经打开的描述符,比如 socket 描述符,这样一个进程在这个描述符上写数据,一个进程在这个描述符上读数据,即可实现通信下面的方法可以传递已打开的描述符:fork 返回后,子进程与父进程共享所有已打开的描述符,同时,exec 执行后,一般已打开的描述符状态仍然会保持不变但是限制在于必须是父子进程间通信并且只能由父进程传递给子进程下面即将介绍的 socketpair 函数则没有这样的限制socketpair 函数int socketpair (int family, int type, int protocol, int sockfd[2]); 定义于 sys/socket.h调用成功返回非 0 的连接描述符,出错返回 -1 family 参数必须为 AF_LOCALprotocol 参数必须为 0type 参数可以选择 SOCK_STREAM 或 DGRAM_STREAM新创建的两个套接字描述符作为 sockfd[0] 和 sockfd[1] 返回type 为 SOCK_S
#读书笔记    #技术帖    #linux    #unix   
1 2 3



京ICP备15018585号