UNP读书笔记 第五章 TCP客户/服务器程序指示

TCP客户/服务器程序指示

简单的回射客户端/服务器
1.TCP回射服务器程序:main函数
①创建套接字,捆绑服务器众所周知接口(SERV_PORT)。②等待完成客户连接
③并发服务器(fork)
在这里插入图片描述

2.TCP回射服务器程序:str_echo函数
从客户读入数据,并把他们回射给客户。
读入缓冲区,并回射其内容
read函数从套接字读入数据,writen把其中的内容回射给客户。如果客户关闭连接,那么接受到客户的FIN将导致服务器子进程的read函数返回0.

3.TCP回射客户:main函数
①创建套接字,装填国际网套接字地址结构。②连接服务器
在这里插入图片描述

4.TCP回射客户程序:str_cli函数
①读入一行写到服务器(Fgets读入一行文本,Writen把它写入到服务器)②从服务器读入回射行,写到标准库(Readline从服务器读入回射行,Fputs把它写入到标准库)③返回到main函数
客户处理循环
5.正常启动
①首先在主机Linux后台启动服务器②服务器启动后它会调用bind、listen、accept,并阻塞于accept调用(我们还没有启动客户)。③在同一主机上启动客户④客户调用socket和connect,后者引起TCP三次握手。当三次握手完成以后,客户中的connect和服务器的acceot均返回,连接于是建立。⑤客户调用 str_cli函数,该函数阻塞于fgets,我们还没键入文本。⑥当服务器的accept函数返回时,服务器调用fork,再由子进程调用str_echo,另一方面,服务器父进程再次调用accept并阻塞,等待下一个客户连接。

6.正常终止
连接已建立,不论我们在客户的标准输入中键入什么,都会回射到他的标准输出中。
正常终止客户和服务器的步骤

7.POSIX信号处理
信号(signal)就是告知某个进程发生了某个事件的通知。信号可以:由一个进程发给另一个进程也可以由内核发给某一个进程。
signal函数,建立信号处置的POSIX的方法就是调用sigaction函数。(稍微复杂,简单的方法就是调用signal函数)。
用typedef简化函数原型。函数singal的正常函数原型因层次太多而变得很复杂。
设置处理函数。
设置处理函数的信号掩码。
设置SA_RESTART标志
调用sigaction函数

8.处理SIGCHLD函数
设置僵死(zombie)状态的目的是维护子进程的信息,以便父进程在某个时候能够获取。
处理被中断的系统调用

9.wait和waitpid函数
函数wait和waitpid均返回两个值:已终止的子进程的进程ID号以及通过statloc指针返回的子进程终止状态。

10.服务器进程终止

总结
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值