str_cli函数完成客户处理循环:
从标准输入读入一行文本,写到服务器上,读回服务器对该行的回射,并把回射行写到标准输出上
读入一行,写到服务器
fgets读入一行文本,writen把该行发送给服务器
从服务器读入回射行,写到标准输出
readline从服务器读入回射行,fputs把它写到标准输出
返回main函数
当遇到文件结束符或错误时,fgets将返回一个空指针,于是客户处理循环终止
我们的Fgets函数检查是否发生错误,若发生则中止进程,因此Fgets只是在遇到文件结束符时才返回一个空指针
#include "unp.h"
void
str_cli(FILE *fp, int sockfd)
{
char sendline[MAXLINE], recvline[MAXLINE];
while (Fgets(sendline, MAXLINE, fp) != NULL) {
Writen(sockfd, sendline, strlen(sendline));
if (Readline(sockfd, recvline, MAXLINE) == 0)
err_quit("str_cli: server terminated prematurely");
Fputs(recvline, stdout);
}
}