当前位置: 技术问答>linux和unix
NTP服务器接收端的问题
来源: 互联网 发布时间:2016-11-17
本文导语: 本帖最后由 hefa880 于 2011-03-30 04:15:14 编辑 急急~~~~~ 为了测试NTP服务器的处理能力,写了两个文档,一个用来专门发送请求,一个专门用来接收服务器返回的请求。我的发送端分可以正常发数据,但是接收那一端却是...
为了测试NTP服务器的处理能力,写了两个文档,一个用来专门发送请求,一个专门用来接收服务器返回的请求。我的发送端分可以正常发数据,但是接收那一端却是一个数据也收不到,将两个整合在一起却又可以正常收发,弄不明白是为什么?原来想用bind()来绑定一个NTP端口的,但是运行时提示“无法分配请求的地址”,百思不得其解。后来将端口改大了,就可以通过,但是我要的NTP专用的端口 123,请问如何解决接收数据的问题啊?用了那些强制允许重复绑定的函数也不能正常运行,还是提示“bind error: Cannot assign requested address
”不知道哪位大侠能指点下小弟,感激不尽。
接收端的代码如下:
//ntp_rev.c
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define int8 char
#define uint8 unsigned char
#define uint32 unsigned int
#define ulong32 unsigned long
#define long32 long
#define int32 int
#define long64 long long
#define debug
//3600s*24h*(365days*70years+17days)
#define From00to70 0x83aa7e80U
#define NTPSVR "192.168.2.8" //myserver
#define NTPPORT 123
typedef struct NTPPACKET
{
uint8 li_vn_mode;
uint8 stratum;
uint8 poll;
uint8 precision; //有符号整数表示本地时钟精确度
ulong32 root_delay; //到达服务器的一次往返的总延时,是15到16位有符号的定点小数
ulong32 root_dispersion; // 到达服务器的一次标准误差,是15-16位的无符号的定点小数
int8 ref_id[4];
ulong32 reftimestamphigh; //本地时钟最后被设定或校正的时间T4
ulong32 reftimestamplow;
ulong32 oritimestamphigh; //向服务器请求分离客户机的时间戳,采用64位时标格式T1
ulong32 oritimestamplow;
ulong32 recvtimestamphigh; //向服务器请求到客户机的时间戳,采用64位时标格式T2
ulong32 recvtimestamplow;
ulong32 trantimestamphigh; //向客户机答复分离服务器的时间戳,采用64位时标格式T3,用T3来校正本地时间
ulong32 trantimestamplow;
}NTPPacket;
NTPPacket ntppack,newpack;
//定义为long64,解决32位数的符号位问题
long64 firsttimestamp,finaltimestamp;
long64 diftime,delaytime;
void NTP_Init()
{
bzero(&ntppack,sizeof(ntppack));
ntppack.li_vn_mode=0x1b;//0|(3
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。