
Linux网络编程
文章平均质量分 66
蓝喵小可爱
这个作者很懒,什么都没留下…
展开
-
Linux编程网络之TCP通信
TCP/IP通信会用到很多API函数,还有许多杂的知识点。 我们知道,TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。双方都必须为该链接分配必要的内和资源,以管理连接的状态和连接上数据的传输。TCP连接是全双工的,完成数据交换后,通信双方必须断开连接以释放系统资源。原创 2017-08-29 15:46:46 · 633 阅读 · 0 评论 -
Linux编程之pipe管道通信(1)
管道是为了实现进程间相互通信的。可以形象的比喻它为一个管子,管子有两头,不过只能在一端进行读操作,另一端进行写操作。 管道分为两类(1)无名管道,仅适用父子进程间的通信,pipe(fd) fd[0]读 fd[1] 写 (2)有名管道:任意进程可进行通信。 pipe函数可用原创 2017-10-10 15:49:30 · 620 阅读 · 0 评论 -
Linux编程之pipe管道通信(2)
上一篇我们介绍过创建管道的pipe函数,下面在代码中我们来实现进程间的通信吧。 管道能在父、子进程间传递数据,利用的是fork调用之后两个管道文件描述符(fd[0],fd[1])都保持打开。一对这样的文件描述符只能保证父、子进程间一个方向的数据传输,父进程和子进程必须有一个关闭fd[0],另一个关闭fd[1]。比如,我们要使用管道实现从父进程向子进程写数据,可按照下图来操作:原创 2017-10-11 16:49:21 · 1463 阅读 · 0 评论 -
服务器程序框架之3.两种高效的事件处理模式
服务器程序通常需要处理三类事件:I/O事件、信号及定时事件。本篇先从整体上介绍一下联众高效的事件处理模式:Reactor和Proactor。 随着网络设计模式的兴起,Reactor和Proactor事件处理模式应运而生。同步I/O模型经常用于实现Reactor模式,异步I/O模式可用于实现Proactor模式。后面会看到,如何使用同步I/O方式模拟出Proactor模式...原创 2018-02-09 17:10:31 · 320 阅读 · 0 评论 -
服务器程序框架之1.服务器模型
期末的时候做完开题报告,用了半个寒假投了一篇英文论文出去。两本书籍已经阅读完毕,现总结高性能服务器程序框架内容,分四篇文章介绍服务器模型、I/O模型(四种I/O模型)、两种高效事件处理模式和两种高效的并发模式。正文开始:1.C/S模型 TCP/IP协议在设计和实现上并没有客户端和服务器的概念。在通信过程中所有机器都是对等的。但由于资源(视频、资源、软件等)都被数据提供者所垄断,所以几乎原创 2018-02-05 16:05:07 · 342 阅读 · 0 评论 -
服务器程序框架之2. I/O模型
前面有讲到过,socket在创建的时候是默认阻塞的。我们可以给socket系统调用的第2个参数传递SOCK_NONBLOCK标志,或者通过fcntl系统调用的F_SETFL命令,将其设置为非阻塞的。阻塞和非阻塞的概念能应用于所有文件描述符,而不仅仅是socket。我们称阻塞的文件描述符为阻塞I/O,称非阻塞的文件描述符为非阻塞I/O。 针对阻塞I/O执行的系统调用可能因为无法立即完原创 2018-02-06 21:26:35 · 235 阅读 · 0 评论 -
服务器程序框架之4.两种高效的并发模式(1)
新年快乐啊,2018我爱的人和爱我的人,一切顺利开心。服务器程序框架---终章 正文: 并发编程的目的是让程序“同时执行多个任务”。如果程序是计算密集型的,并发编程并没有优势,反而由于任务的切换使效率降低。但如果程序是I/O密集型的,比如经常读写文件,访问数据库等,情况就不同了。由于I/O操作的速度远没有CPU的计算速度快,所以让程序阻塞于I/O于I/O操作将浪费大量的CPU时间。如果...原创 2018-02-28 20:30:15 · 375 阅读 · 0 评论 -
服务器程序框架之4.两种高效的并发模式(2)
本篇主要介绍领导者/追随者模式 领导者/追随者模式是多个工作线程轮流获得事件源集合。轮流监听、分发并处理事件的一种模式。在任意时间点,程序都仅有一个领导者线程,它负责监听I/O事件。而其他线程则都是追随者,它们休眠在线程池中等待成为新的领导者。当前的领导者如果检测到I/O事件,首先要从线程池中推选出新的领导者线程,然后处理I/O事件。此时,新的领导者等待新的I/O事件,而原来的领导者则...原创 2018-03-02 14:56:55 · 393 阅读 · 0 评论 -
Libevent库源码的剖析
Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,它有几个显著的优点 : (1)事件驱动(event-driven),高性能;(2)轻量级,专注于网络,不如ACE那么臃肿庞大;(3)源代码相当精炼、易读;(4)跨平台,支持Windows、Linux、*BSD和Mac Os;(5)支持多种I/O多路复用技术, e...原创 2018-03-06 14:15:22 · 510 阅读 · 0 评论