⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 strcliselect02.c

📁 unix网络编程第一卷socket编程书上的全部源代码
💻 C
字号:
#include	"unp.h"voidstr_cli(FILE *fp, int sockfd){	int			maxfdp1, stdineof = 0;	fd_set		rset;	char		sendline[MAXLINE], recvline[MAXLINE];	heartbeat_cli(sockfd, 1, 5);	FD_ZERO(&rset);	for ( ; ; ) {		if (stdineof == 0)			FD_SET(fileno(fp), &rset);		FD_SET(sockfd, &rset);		maxfdp1 = max(fileno(fp), sockfd) + 1;		if (select(maxfdp1, &rset, NULL, NULL, NULL) < 0) {			if (errno == EINTR)				continue;			else				err_sys("select error");		}		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");			}			Writen(STDOUT_FILENO, recvline, strlen(recvline));		}		if (FD_ISSET(fileno(fp), &rset)) {  /* input is readable */			if (Fgets(sendline, MAXLINE, fp) == NULL) {				stdineof = 1;				alarm(0);			/* turn off heartbeat */				Shutdown(sockfd, SHUT_WR);	/* send FIN */				FD_CLR(fileno(fp), &rset);				continue;			}			Writen(sockfd, sendline, strlen(sendline));		}	}}

⌨️ 快捷键说明

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