📄 sntp.h
字号:
#include <stdio.h>#include <sys/types.h>#include <sys/fcntl.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <wait.h>#include <signal.h>#include <pthread.h>#include <time.h>#include <arpa/inet.h>#define TIME_PORT 123#define MAXLINE 255#define MAX_SNTP_SERVER 3typedef struct{ unsigned int Seconds; /* Since 00:00:00 Jan 01 1900 */ unsigned int Fraction;} NTP_TIMESTAMP;typedef struct{ char Control; char Stratum; char Poll; char Precision; unsigned int RootDelay; unsigned int RootDispersion; unsigned int ReferenceIdentifier; NTP_TIMESTAMP ReferenceTimestamp; NTP_TIMESTAMP OriginateTimestamp; NTP_TIMESTAMP ReceiveTimestamp; NTP_TIMESTAMP TransmitTimestamp; unsigned int KeyIdentifier; /* Optional */ char MessageDigest[16]; /* Optional */} NTP_PACKET;#define NTP_PACKET_MINLEN 48 /* Packet size - optional fields */#define NTP_LI_NOLEAP 0x00#define NTP_LI_61SECS 0x40#define NTP_LI_59SECS 0x80#define NTP_LI_ALARM 0xC0#define NTP_VERSION_GET(pkt) ((((pkt)->Control)>>3)&0x7)#define NTP_VERSION_SET(ver) (((ver)&0x7)<<3)#define NTP_MODE_RESERVED 0#define NTP_MODE_SYMACTIVE 1 /* Symmetric Active */#define NTP_MODE_SYMPASSIVE 2 /* Symmetric Passive */#define NTP_MODE_CLIENT 3#define NTP_MODE_SERVER 4#define NTP_MODE_BROADCAST 5#define NTP_MODE_NTPCTRL 6 /* Reserved for NTP control message */#define NTP_MODE_PRIVATE 7 /* Reserved for private use */#define NTP_MODE_GET(pkt) (((pkt)->Control)&0x7)#define NTP_MODE_SET(mode) ((mode)&0x7)#define TIME_BASEDIFF ((((unsigned int)70*365 + 17) * 24*3600))#define TIME_NTP_TO_LOCAL(t) ((t)-TIME_BASEDIFF)#define TIME_LOCAL_TO_NTP(t) ((t)+TIME_BASEDIFF)struct sntp_srv_s{ struct sockaddr_in addr; int stratum; int version; unsigned int timestamp;};#define SNTP_WAITPERIOD 10 /* Wait period in seconds */#define SNTP_UPDATEPERIOD (30*60) /* Update period in seconds */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -