技术综合

49-使用 poll 改写服务器

在前面,我们使用了select改写了服务器,本文使用poll来改写服务器。1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已...

45-批量输入异常处理(shutdown 函数)

本文解决上一篇文章遇见的bug.1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已经clone过这个代码了,请使用gitpu...

44-批量输入异常

1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已经clone过这个代码了,请使用gitpull更新一下。本节程序所使用的程...

27-TCP 协议(快重传与快恢复)

很遗憾的是,这里一节我没办法用实验演示给你看,但是我尽量用文字和图叙述清楚。慢启动和拥塞避免算法是在1988年提出的,而快重传和快恢复是1990年提出的。既然这两个新算法是时隔两年后才提出的,那么它一定是对慢启动和拥塞避免算法的不足之处进行...

43-使用 select 改进客户端

1.程序路径代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已经clone过这个代码了,请使用gitpull更新一下。本节程序所使用的程...

34-异常处理(accept 返回前连接中止)

网络编程的难度在于异常状况的处理。在前面学习TCP协议的时候,我们就分析过各种连接异常,断开异常等等,大家要把各种情况烂记于心。本文我们探讨一种比较特殊的情况,即客户端连接建立成功后(进入ESTABLISHED状态),立即关闭连接退出。而此...

33-基于 TCP 的回射服务器

有些同学可能没有完成上一节留下的任务。所以,还是有必要在浏览一下整个程序的结构,不然大家可能看看文章也就过去了。如果你还没有gitclone,赶紧的把下面命令输入到你的机器中执行。gitclonehttps://git.oschina.ne...

36-多进程并发服务器(僵尸进程与信号处理)

在上一篇文章中,最后遗留了一个僵尸进程的问题。一旦客户端关闭连接,服务器子进程就会退出,然而父进程仍然存在,就产生了“白发人送黑发人”的场景。如果父进程没有主动回收(wait)子进程,或者没有忽略SIGCHLD信号,退出的子进程就会成为僵尸...

35-并发服务器(多进程)

待你进一步完善了前面的echo服务器后,也处理了对端发送而来的RST段而导致的错误。现在,我们遇到了一个新问题,即客户端在关闭退出后,服务器也关闭退出了。1.让服务器永远运行解决的办法很简单,我们将server改进为下面这样:voidser...

37-多进程并发服务器(并发测试)

因为我们没有大量的测试机器,所以只能在单机上模拟大量客户端去连接服务器。代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已经clone过...

38-连接断开异常(服务器进程终止)

代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已经clone过这个代码了,请使用gitpull更新一下。本次实验所使用的程序路径仍然是...

42-IO 多路复用

1.概述早在学习《Linux环境编程笔记》的时候,我们已经把IO多路复用的知识系统的介绍了,它主要包括select、poll和epoll技术。如果你还没有熟练的掌握这些知识,请参考《Linux环境编程笔记》的第十二章,一共有9篇文章,希望你...