技术控

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

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

33-基于 TCP 的回射服务器

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

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

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

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

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

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

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

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

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

40-连接异常(服务器崩溃)

说服务器崩溃,言外之意就是说服务器挂了,但是没有发送FIN报文给客户端。不管是崩溃也好,服务器断网也好,还是中间路由器故障,只要客户机发送数据给对方,数据达到不了对方,或对方数据传送不过来,客户端和服务器都互相不能感知到对方是否出现异常。所...

39-连接断开异常(引发 SIGPIPE)

代码托管在gitos上,请使用下面的命令获取:gitclonehttps://git.oschina.net/ivan_allen/unp.git如果你已经clone过这个代码了,请使用gitpull更新一下。本次实验是接着上一篇文章的实验...

42-IO 多路复用

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

44-批量输入异常

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

43-使用 select 改进客户端

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

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

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