亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sntp.c

?? 網絡時間同步協議的實現
?? C
字號:
/*說明:     1)  本程序讀取配置文件/etc/ntp.conf中的server段所示的時間服務器,如tick.stdtime.gov.tw等;    2)  將這些服務器名轉換為IP地址.加入服務器列表中.服務器列表最多能加入MAX_TIME_SERVER個時間服務器.    3)  從服務器列表中選取一個比較精確的時間服務器,使本機同其同步.    4)  主進程調用register_serv()函數載入時間服務器的IP地址,然后調用sntp_start()函數起動sntp客戶端.    5)  sntp客戶端收到發往本進程的UDP包,判定是合法時間服務器所發的包后,作一些比較處理并修改時間.    6)  本進程起動的時間間隔為UPDATEPERIOD秒,超時時間定義為UPDATETIMEOUT秒,分別定義為30*60和10;    7)  有關ntp/sntp的數據結構在sntp.h中定義;*/#include "sntp.h"static intis_better (struct sntp_srv_s *newer, struct sntp_srv_s *old){  time_t last_time, diff;  if (!memcmp (&newer->addr, &old->addr, sizeof (struct sockaddr)))    return 1;  if (newer->stratum < old->stratum)    return 1;  if (old->timestamp != 0xffffffff)    {      last_time = TIME_NTP_TO_LOCAL (old->timestamp);      diff = time (NULL) - last_time;      if (diff > 600)	return 1;      return 0;    }  return 1;}intisInServerList (struct sockaddr_in *pserver_addr,		struct sockaddr_in *sntp_server_list,		unsigned int sntp_num_servers){  int i;  for (i = 0; i < sntp_num_servers; i++)    {      if (memcmp	  (&(pserver_addr->sin_addr), &(sntp_server_list[i].sin_addr),	   sizeof (struct in_addr)) == 0)	{	  if (pserver_addr->sin_port == htons(TIME_PORT))	    return 1;	}    }  return 0;}voidsntp_start (struct sockaddr_in *server_list, unsigned int num_servers){  if (num_servers == 0)    return;  struct sockaddr_in *sntp_servers = server_list;  unsigned int sntp_num_servers = num_servers;  time_t NextTimeUpdate = 0;  int fd;  int ret;  NTP_PACKET ntp_pkt;  struct sntp_srv_s new_srv;  struct sntp_srv_s best_srv;  int mode;  int len;  time_t new_time, current_time, diff;  fd_set readfds;  int n;  int i;  struct timeval timeout;  struct timeval *ptimeout = NULL;  struct sockaddr_in *preply_addr =    (struct sockaddr_in *) malloc (sizeof (struct sockaddr_in));  memset (&best_srv, 0xff, sizeof (best_srv));  fd = socket (AF_INET, SOCK_DGRAM, 0);  if (fd <= 0)    {      perror ("Failed to open socket");      return;    }  n = fd;  while (1)    {      FD_ZERO (&readfds);      FD_SET (fd, &readfds);      timeout.tv_sec = SNTP_WAITPERIOD;      timeout.tv_usec = 0;      ptimeout = &timeout;      if (NextTimeUpdate != 0)	{	  current_time = time (NULL);	  if (current_time < NextTimeUpdate)	    {	      timeout.tv_sec =		(SNTP_WAITPERIOD >		 (NextTimeUpdate - current_time) ? (NextTimeUpdate -						    current_time) :		 SNTP_WAITPERIOD);	    }	  else	    NextTimeUpdate = 0;	}      if (NextTimeUpdate == 0 && (sntp_num_servers > 0))	{	  memset (&ntp_pkt, 0, sizeof (ntp_pkt));	  ntp_pkt.Control =	    NTP_LI_NOLEAP |	    NTP_MODE_SET (NTP_MODE_CLIENT) | NTP_VERSION_SET (3);	  for (i = 0; i < sntp_num_servers; i++)	    {	      ntp_pkt.TransmitTimestamp.Seconds =		htonl (TIME_LOCAL_TO_NTP (time (NULL)));	      sendto (fd, &ntp_pkt, sizeof (ntp_pkt), 0,		      (struct sockaddr *) &(sntp_servers[i]),		      sizeof (struct sockaddr_in));	      NextTimeUpdate = time (NULL) + SNTP_WAITPERIOD;	    }	  ret = select (n + 1, &readfds, NULL, NULL, ptimeout);	  if (ret <= 0)	    {	      printf ("timeout or error occur\n");	      sleep (1);	      continue;	    }	  len = sizeof (struct sockaddr);	  if (FD_ISSET (fd, &readfds))	    {	      ret =		recvfrom (fd, &ntp_pkt, sizeof (ntp_pkt), 0,			  (struct sockaddr *) preply_addr, &len);	      if (!isInServerList		  (preply_addr, sntp_servers, sntp_num_servers))		continue;	    }	  if (ret < NTP_PACKET_MINLEN)	    {	      perror ("receive size too small");	      continue;	    }	  new_srv.version = NTP_VERSION_GET (&ntp_pkt);	  new_srv.stratum = ntp_pkt.Stratum;	  new_srv.timestamp = ntohl (ntp_pkt.TransmitTimestamp.Seconds);	  mode = NTP_MODE_GET (&ntp_pkt);	  if (new_srv.version < 3 || new_srv.version > 4)	    {	      continue;	    }	  if (mode != NTP_MODE_BROADCAST && mode != NTP_MODE_SERVER)	    continue;	  if (is_better (&new_srv, &best_srv))	    {	      best_srv = new_srv;	      new_time = TIME_NTP_TO_LOCAL (best_srv.timestamp);	      current_time = time (NULL);	      diff = current_time - new_time;	      if (diff < 0)		diff = -diff;	      if (diff > 2)		stime (&new_time);	    }          sleep (SNTP_UPDATEPERIOD);	  NextTimeUpdate = time (NULL);	}    }}intregister_serv (int j, char *server_name, struct sockaddr_in *server_list){  int i;  struct hostent *hp;  char *pname;  pname = server_name;  while ((*pname != ' ') && (*pname != '\t') && (*pname != '\n'))    pname++;  (*pname) = 0;  printf ("the server_name=%s,and the len=%d\n", server_name,	  strlen (server_name));  for (i = 0; i < 3; i++)    {      if (!(hp = gethostbyname (server_name)))	continue;      else	break;    }  if (hp == NULL)    return 0;  memcpy (&(server_list[j].sin_addr), hp->h_addr, 4);  server_list[j].sin_port = htons (TIME_PORT);  server_list[j].sin_family = AF_INET;  return 1;}intmain (){  int ifork;  if ((ifork = fork ()) < 0)    {      printf (">>can't fork\n");      exit (-1);    }  else if (ifork > 0)    {      exit (0);    }  struct sockaddr_in time_server_list[MAX_SNTP_SERVER];  FILE *fp;  fp = fopen ("/etc/ntp.conf", "r");  if (fp <= 0)    {      printf (" 配置文件不存在,程序不能執行\n");      exit (0);    }  char linebuf[MAXLINE];  char servname[100];  int i = 0;  char *pname;  while (fgets (linebuf, MAXLINE, fp) != NULL)    {      if ((strncmp (linebuf, "server", 6) == 0))	{	  pname = linebuf;	  pname += 7;	  while ((*pname) == ' ')	    pname++;	  if (strncmp (pname, "127.", 4) == 0)	    continue;	  if (i > MAX_SNTP_SERVER)	    break;	  if (register_serv (i, pname, time_server_list))	    {	      printf ("the time server %s is registered\n", pname);	      i++;	    }	  else	    {	      printf ("the time server %s register failed\n", pname);	    }	}      else	continue;    }  fclose (fp);  sntp_start ((struct sockaddr_in *) time_server_list, i--);  exit (0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av资源在线| 亚洲成人你懂的| 久久精品亚洲国产奇米99| 3d成人动漫网站| 欧美一区午夜视频在线观看| 欧美乱妇15p| 欧美另类一区二区三区| 日韩精品一区二区三区在线观看 | 福利一区二区在线| 国产激情一区二区三区四区| 精品影视av免费| 国产精品亚洲а∨天堂免在线| 国产精品 日产精品 欧美精品| 成人性生交大片免费看中文网站| 国产成人午夜高潮毛片| 成人免费视频一区| 色婷婷精品久久二区二区蜜臂av| 欧美在线观看一区| 欧美一区二区啪啪| 久久精品一二三| 亚洲激情在线播放| 天天综合网 天天综合色| 裸体一区二区三区| 丁香啪啪综合成人亚洲小说| 91亚洲国产成人精品一区二区三 | 精品久久久影院| 国产精品久久久久久久蜜臀| 亚洲制服欧美中文字幕中文字幕| 调教+趴+乳夹+国产+精品| 久久成人18免费观看| 成人免费观看av| 在线电影欧美成精品| 国产亚洲自拍一区| 亚洲va欧美va人人爽午夜| 精品一区二区影视| 色屁屁一区二区| 日韩免费看的电影| 中文字幕一区二区三区精华液| 亚洲大片一区二区三区| 国产精品一二三在| 91精品国产综合久久国产大片| 国产欧美日韩综合| 奇米精品一区二区三区在线观看 | 美女一区二区视频| 99精品视频一区| 日韩三级视频在线观看| 亚洲视频资源在线| 国内成人精品2018免费看| 欧美亚洲综合一区| 欧美国产国产综合| 久草精品在线观看| 精品视频免费在线| 亚洲欧美另类图片小说| 国产一区二区伦理| 日韩一级片在线播放| 伊人色综合久久天天| 丰满亚洲少妇av| 亚洲精品一线二线三线| 免费成人在线观看| 欧美日韩国产小视频| 亚洲欧洲综合另类在线 | 综合色中文字幕| 国产精品亚洲视频| 久久久精品国产免费观看同学| 日韩在线卡一卡二| 欧美理论在线播放| 亚洲午夜免费电影| 91成人网在线| 亚洲国产人成综合网站| 色视频成人在线观看免| 亚洲精品成人悠悠色影视| 99视频一区二区三区| 国产精品免费久久久久| 国产1区2区3区精品美女| 亚洲精品在线免费观看视频| 久久99精品久久久久久动态图| 欧美一区二区三区在线观看| 秋霞影院一区二区| 日韩限制级电影在线观看| 免费高清在线视频一区·| 日韩欧美视频在线| 国产一区久久久| 欧美激情在线免费观看| 成人午夜在线视频| 国产精品国产a| 91福利国产成人精品照片| 亚洲自拍偷拍图区| 欧美精品一级二级| 精品一区二区三区免费视频| 2020国产精品自拍| 成人免费的视频| 一卡二卡三卡日韩欧美| 5566中文字幕一区二区电影| 麻豆精品久久精品色综合| 久久免费午夜影院| 91免费国产视频网站| 亚洲第一av色| 久久亚洲精精品中文字幕早川悠里 | 国产校园另类小说区| 成人综合在线视频| 亚洲午夜日本在线观看| 日韩欧美一区二区视频| 国产高清成人在线| 亚洲综合精品久久| 欧美精品一区二| 色综合夜色一区| 麻豆视频观看网址久久| 国产精品私房写真福利视频| 欧美视频在线一区| 国精产品一区一区三区mba视频 | 欧美系列日韩一区| 精品一区二区免费| 一区二区三区中文免费| 欧美不卡123| 在线视频观看一区| 国产精品18久久久久| 亚洲一区二区四区蜜桃| 久久久亚洲精华液精华液精华液| av一区二区三区四区| 久久成人综合网| 香蕉成人伊视频在线观看| 国产欧美视频一区二区| 欧美一区二区三区啪啪| 色婷婷久久久亚洲一区二区三区 | 国产精品三级av| 日韩午夜中文字幕| 欧美日韩亚洲丝袜制服| 成人av电影在线| 裸体歌舞表演一区二区| 亚洲国产sm捆绑调教视频 | 欧美va天堂va视频va在线| 91在线免费看| 国产成人一级电影| 美女尤物国产一区| 日韩电影在线看| 一二三区精品视频| 亚洲男人电影天堂| 成人欧美一区二区三区白人| 久久久精品2019中文字幕之3| 日韩欧美国产高清| 在线不卡中文字幕| 欧美日韩黄色一区二区| 在线观看不卡视频| 91免费观看视频在线| 不卡一区二区在线| av综合在线播放| 国产成人精品影视| 国产成人综合在线| 国产成人av一区二区三区在线观看| 久久国产麻豆精品| 久久av中文字幕片| 韩国三级电影一区二区| 久久福利视频一区二区| 日av在线不卡| 久久成人羞羞网站| 国产精品一区在线观看乱码| 国产精品资源在线| 国产99久久久精品| 成人黄色一级视频| 95精品视频在线| 一本色道a无线码一区v| 91蝌蚪porny成人天涯| 色婷婷精品久久二区二区蜜臀av| 在线免费观看一区| 欧美高清视频不卡网| 欧美精品久久一区| 欧美xfplay| 国产精品伦理在线| 一区二区三区免费看视频| 亚洲电影激情视频网站| 欧美a一区二区| 国产成人av一区| 91年精品国产| 日韩午夜在线观看视频| 国产欧美一区二区三区沐欲| 国产精品久久久久久久久动漫| 亚洲欧美偷拍卡通变态| 亚洲成av人片在线观看| 精品无人码麻豆乱码1区2区 | www成人在线观看| 国产精品天干天干在观线| 亚洲一区在线观看视频| 麻豆精品蜜桃视频网站| 99久久伊人精品| 制服丝袜中文字幕亚洲| 欧美高清在线一区| 日本在线不卡一区| 成人av资源下载| 日韩欧美综合在线| 亚洲欧美另类在线| 久久99精品国产麻豆婷婷| 成av人片一区二区| 日韩一级免费观看| 一区二区国产视频| 国产露脸91国语对白| 欧美日韩免费视频| 国产精品久久久久久久蜜臀| 捆绑紧缚一区二区三区视频| 91美女在线观看| 国产午夜精品理论片a级大结局 |