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

📄 sntp_proc.c

📁 unix网络编程第一卷socket编程书上的全部源代码
💻 C
字号:
#include	"sntp.h"voidsntp_proc(char *buf, ssize_t n, struct timeval *nowptr){	int				version, mode;	uint32_t		nsec, useci;	double			usecf;	struct timeval	diff;	struct ntpdata	*ntp;	if (n < (ssize_t)sizeof(struct ntpdata)) {		printf("\npacket too small: %d bytes\n", n);		return;	}	ntp = (struct ntpdata *) buf;	version = (ntp->status & VERSION_MASK) >> 3;	mode = ntp->status & MODE_MASK;	printf("\nv%d, mode %d, strat %d, ", version, mode, ntp->stratum);	if (mode == MODE_CLIENT) {		printf("client\n");		return;	}	nsec = ntohl(ntp->xmt.int_part) - JAN_1970;	useci = ntohl(ntp->xmt.fraction);	/* 32-bit integer fraction */	usecf = useci;				/* integer fraction -> double */	usecf /= 4294967296.0;		/* divide by 2**32 -> [0, 1.0) */	useci = usecf * 1000000.0;	/* fraction -> parts per million */	diff.tv_sec = nowptr->tv_sec - nsec;	if ( (diff.tv_usec = nowptr->tv_usec - useci) < 0) {		diff.tv_usec += 1000000;		diff.tv_sec--;	}	useci = (diff.tv_sec * 1000000) + diff.tv_usec;	/* diff in microsec */	printf("clock difference = %d usec\n", useci);}

⌨️ 快捷键说明

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