手把手教你实现《UNIX网络编程》书上程序( 第五章为例)

引言

光说不练假把式,边书边实验能够加深印象,也更有趣。接下来让我们看看如何运行《UNIX网络编程》书上代码吧!

配置环境

《UNIX网络编程:卷一》这本书籍的原始代码在:www.unpbook.com,初始环境配置大家可以参考该网址链接的github仓库。
接着我们进入第五章代码,我这里保存的目录是/opt之下,大家需要做相应替换。

$ cd /opt/unpv13e/tcpcliserv                       

用make命令编译整个文件,方便高效。

$ make                    

接下来我们可以在文件夹中看到可执行文件。
在这里插入图片描述)

执行

启动服务器

启动服务器,用stat查看网络状态

$ ./tcpserv01 &  
$ netstat -a | grep 9877                  

服务器将处于监听状态:

tcp        0      0 *:9877            *:*               LISTEN               

启动客户端

同一机器上启动客户端,

$ ./tcpcli01 127.0.0.1                

终止客户端

按下ctrl+D,相当于EOF字符,并查看网络状态

tcp        0      0 *:9877                      *:*                         LISTEN      
tcp        0      0 localhost:60290             localhost:9877              TIME_WAIT             

当前连接的客户端进入了 TIME_WAIT 状态。

进程的状态

用 ps 命令来检查这些进程的状态和关系。

$ ps -a -o pid,ppid,stat               

进程状态如下:

 PID   PPID STAT
 25729  25725 Ss
 26245  25729 S
 26441  26245 Z
 26443  25729 T
 26452  25729 R+       

PID=26729为服务器父进程,因为等待连接处于睡眠状态。父进程未处理SIGCHLD 信号,子进程PID=26441于是进入僵死状态。

如何改进

需要调用waitpid函数来处理僵死进程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值