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

📄 heartbeatserv.c

📁 unix网络编程第一卷socket编程书上的全部源代码
💻 C
字号:
#include	"unp.h"static int	servfd;static int	nsec;			/* #seconds between each alarm */static int	maxnalarms;		/* #alarms w/no client probe before quit */static int	nprobes;		/* #alarms since last client probe */static void	sig_urg(int), sig_alrm(int);voidheartbeat_serv(int servfd_arg, int nsec_arg, int maxnalarms_arg){	servfd = servfd_arg;		/* set globals for signal handlers */	if ( (nsec = nsec_arg) < 1)		nsec = 1;	if ( (maxnalarms = maxnalarms_arg) < nsec)		maxnalarms = nsec;	Signal(SIGURG, sig_urg);	Fcntl(servfd, F_SETOWN, getpid());	Signal(SIGALRM, sig_alrm);	alarm(nsec);}static voidsig_urg(int signo){	int		n;	char	c; 	if ( (n = recv(servfd, &c, 1, MSG_OOB)) < 0) {		if (errno != EWOULDBLOCK)			err_sys("recv error");	}	Send(servfd, &c, 1, MSG_OOB);	/* echo back out-of-band byte */	nprobes = 0;			/* reset counter */	return;					/* may interrupt server code */}static voidsig_alrm(int signo){	if (++nprobes > maxnalarms) {		printf("no probes from client\n");		exit(0);	}	alarm(nsec);	return;					/* may interrupt server code */}

⌨️ 快捷键说明

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