NTP 客户端代码 服务端openwrt 的ntpd
来源:互联网 发布:冒险岛766数据库403 编辑:程序博客网 时间:2024/05/23 15:45
#define TIMEDIFF (0x83aa7e80) //2209075200LU #define NTP_HEAD_LEN 48typedef struct { int L1; int Version; int mode; char stratum; char poll; char precision; unsigned long root_delay; unsigned long root_dispersion; unsigned long reference_identifier; time_t reference_timestamp; time_t originate_timestamp; time_t receive_timestamp; time_t transmit_timestamp;//should be 64bit }ntp;void pack_ntp_data(char buf[NTP_HEAD_LEN], ntp const *ntp_packet) { memset(buf, 0x00, NTP_HEAD_LEN); buf[0] = (ntp_packet->L1<<6) | (ntp_packet->Version<<3) | (ntp_packet->mode); buf[1] = ntp_packet->stratum; buf[2] = ntp_packet->poll; buf[3] = ntp_packet->precision; memcpy(buf + 4, &ntp_packet->root_delay, 2); printf("time : %lu\n", ntp_packet->transmit_timestamp); memcpy(buf + 40, &ntp_packet->transmit_timestamp, 4); }void unpack_ntp_data(char *data) { __time64_t transmit_time; struct tm *localtm; memcpy(&transmit_time, data + 32, 4); transmit_time = ntohl(transmit_time) - TIMEDIFF; printf("transmit time : %llx\n", transmit_time); //time(&time_tmp); localtm= gmtime(&transmit_time); printf("Year : %d month : %d dat : %d h : %d m : %d s:%d", localtm->tm_year + 1900, localtm->tm_mon + 1, localtm->tm_mday, localtm->tm_hour + 8, localtm->tm_min, localtm->tm_sec); }int _tmain(int argc, _TCHAR* argv[]) { int ret = -1; char buf[NTP_HEAD_LEN]; sockaddr_in server_addr; SOCKET sockfd; ntp ntp_packet; WSADATA wsaData; int iResult; iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult != NO_ERROR) { printf("WSAStartup failed: %d\n", iResult); WSACleanup(); return 1; } sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (sockfd == 0) { printf("fail to create socket\n"); WSACleanup(); return 0; } server_addr.sin_port = htons(123); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr("192.168.0.100");//202.120.2.101 ret = connect(sockfd, (sockaddr*)&server_addr,sizeof(server_addr)); if (ret == SOCKET_ERROR) { printf("fail to connect to server\n"); WSACleanup(); return 0; } ntp_packet.L1 = 0;//no warning ntp_packet.Version = 3; ntp_packet.mode = 3;//client ntp_packet.stratum = 0; ntp_packet.poll = 5; ntp_packet.root_delay = 0; ntp_packet.precision = -6; //time(&ntp_packet.transmit_timestamp); pack_ntp_data(buf, &ntp_packet);// ret = send(sockfd, buf, NTP_HEAD_LEN, 0); ret=sendto(sockfd,buf,NTP_HEAD_LEN,0,(sockaddr *)&server_addr,sizeof(server_addr)); if (ret == SOCKET_ERROR) { printf("send data to server error\n"); return 0; } while(1) { int len=sizeof(server_addr); //ret = recv(sockfd, buf, sizeof(char) * 48, MSG_WAITALL); ret = recvfrom(sockfd, buf, sizeof(char) * NTP_HEAD_LEN, 0,(sockaddr *)&server_addr,&len); if (ret > 0) { printf("receive data from server ret : %d\n", ret); unpack_ntp_data(buf); break; } else if (ret == 0) { printf("connection closed\n"); } else printf("recv failed\n"); Sleep(1000); } closesocket(sockfd); WSACleanup(); return 0; }
- NTP 客户端代码 服务端openwrt 的ntpd
- windows下NTP的配置(服务端和客户端)
- 配置NTP服务ntpd/ntp.conf
- JMX服务端和客户端的代码
- 客户端与服务端之间的关系代码
- 简单的服务端与客户端通信代码
- cxf 服务端生成客户端的代码
- 简单客户端 服务端代码
- 配置树莓派的NTP客户端
- 简单的NTP客户端实现
- linux 下ntp客户端协议代码实现
- Unity 中服务端与客户端的的代码Demo
- Unity 中服务端与客户端的的代码Demo
- soap客户端调用服务端代码
- TCP 客户端 服务端详细代码
- 简单实用的java socket服务端和客户端代码
- 客户端脚本Javascript调用服务端代码的途径
- 用thrift实现客户端和服务端的C++代码
- 标准Linux文件系统层次标准(Filesystem Hierarchy Standard)/usr篇
- VC++读写excel文档
- 远程桌面连接的命令
- 地图选择及地图偏移解决方案(二)
- 更改Tomcat虚拟内存大小
- NTP 客户端代码 服务端openwrt 的ntpd
- apache+多个tomcat+memcached共享session会话(ubuntu12.04篇)
- 利用MyBatis Generator自动创建代码
- WinRAR破解方法
- VC设置静态文本透明显示,动态更新内容,不重叠
- linux平台及windows平台mysql重启方法
- LO Cockpit Step By Step
- [转]vxworks和linux等 嵌入式操作系统相关
- vim使用