str_cli_select02.c

来自「《Unix网络编程》的源代码的advio部分」· C语言 代码 · 共 41 行

C
41
字号
#include	"unp.h"voidstr_cli(FILE *fp, int sockfd){	int			maxfdp1, stdineof = 0;	fd_set		rset;	char		sendline[MAXLINE], recvline[MAXLINE];	FD_ZERO(&rset);	for ( ; ; ) {		if (stdineof == 0)			FD_SET(fileno(fp), &rset);		FD_SET(sockfd, &rset);		maxfdp1 = max(fileno(fp), sockfd) + 1;		Select(maxfdp1, &rset, NULL, NULL, NULL);		if (FD_ISSET(sockfd, &rset)) {	/* socket is readable */			if (Readline(sockfd, recvline, MAXLINE) == 0) {				if (stdineof == 1)					return;		/* normal termination */				else					err_quit("str_cli: server terminated prematurely");			}			Fputs(recvline, stdout);		}		if (FD_ISSET(fileno(fp), &rset)) {  /* input is readable */			if (Fgets(sendline, MAXLINE, fp) == NULL) {				stdineof = 1;				Shutdown(sockfd, SHUT_WR);	/* send FIN */				FD_CLR(fileno(fp), &rset);				continue;			}			Writen(sockfd, sendline, strlen(sendline));		}	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?