C# NTP 时钟同步,获取指定IP地址的系统时间及错误问题解决。
2013-06-04 12:20
1716 查看
为了实现内网间机子的时钟同步,需要用到NTP协议的,所以做了一下这方面工作。
实现获取指定IP系统时间的代码在网上有现成的:
这里有一个网友提供的免费下载的地址:http://wenku.baidu.com/view/07d8aad53186bceb19e8bb25.html
调用的方法如下:
注:
1、NTP基于UDP报文进行传输,使用的UDP端口号为123。
2、指定的IP可以是公网的IP,下面是一些网络上提供的时间服务器IP地址。
210.72.145.44
203.117.180.36
131.107.1.10
64.236.96.53
130.149.17.21
66.92.68.246
18.145.0.30
137.92.140.80
133.100.9.2
128.118.46.3
210.72.145.44(中国国家授时中心服务器IP地址)
202.120.2.101 (上海交通大学网络中心NTP服务器地址)
3、也可以内网局域网的,但是我测试的时候,出现了以下几个错误(win7下的操作):
1、远程主机强迫关闭了一个现有的连接。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/24/4eb23f0d54d49d00d9d0d57bbae3d798)
解决办法:运行 -- services.msc -- 找到Windows Time并开启。你也可以设置他的属性为自动的。
2、由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/24/6fba18df8379e05076241e93302f6cd0)
解决办法:
1、有可能是指定IP的主机的NTP服务没有开启,运行 -- gpedit.msc -- 计算机配置 -- 管理模版 -- 系统 -- windows时间服务 --时间提供程序,在右侧找到“启用 Windows NTP 服务器”双击选择--“已启用”-- 确定,可以参照下面给出下载链接里的PDF文件。
2、有可能是指定IP的主机的Windows Time服务没有开启。解决方法如上面。
3、有可能是指定IP的主机的防火墙阻止了123端口,控制面板--防火墙--入站规则--右侧一栏点击新建规则--端口--UDP--特定本地端口:123-- 允许链接--全选--随便取个名字。确定开启。
源码及文档下载:http://download.csdn.net/detail/wushang923/5514821
下载内容(大部分本文已给出):
1、SNTP时钟同步,获取指定IP主机系统时间并设置本地时间的程序源码。
2、客户端调用方法。
3、winXP及win7下开启NTP服务方法.pdf
4、NTP协议格式(中文).doc
实现获取指定IP系统时间的代码在网上有现成的:
这里有一个网友提供的免费下载的地址:http://wenku.baidu.com/view/07d8aad53186bceb19e8bb25.html
调用的方法如下:
var client = new SNTPTimeClient("127.0.0.1", "123"); client.Connect(); DateTime getEd = client.ReceiveTimestamp;//获取指定IP的系统时间 var st = new SystemTime { wDay = (ushort)getEd.Day, wDayOfWeek = (ushort)getEd.DayOfWeek, wHour = (ushort)getEd.Hour, wMiliseconds = (ushort)getEd.Millisecond, wMinute = (ushort)getEd.Minute, wMonth = (ushort)getEd.Month, wSecond = (ushort)getEd.Second, wYear = (ushort)getEd.Year }; SNTPTimeClient.SetLocalTime(ref st);//设置本地时间
注:
1、NTP基于UDP报文进行传输,使用的UDP端口号为123。
2、指定的IP可以是公网的IP,下面是一些网络上提供的时间服务器IP地址。
210.72.145.44
203.117.180.36
131.107.1.10
64.236.96.53
130.149.17.21
66.92.68.246
18.145.0.30
137.92.140.80
133.100.9.2
128.118.46.3
210.72.145.44(中国国家授时中心服务器IP地址)
202.120.2.101 (上海交通大学网络中心NTP服务器地址)
3、也可以内网局域网的,但是我测试的时候,出现了以下几个错误(win7下的操作):
1、远程主机强迫关闭了一个现有的连接。
解决办法:运行 -- services.msc -- 找到Windows Time并开启。你也可以设置他的属性为自动的。
2、由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
解决办法:
1、有可能是指定IP的主机的NTP服务没有开启,运行 -- gpedit.msc -- 计算机配置 -- 管理模版 -- 系统 -- windows时间服务 --时间提供程序,在右侧找到“启用 Windows NTP 服务器”双击选择--“已启用”-- 确定,可以参照下面给出下载链接里的PDF文件。
2、有可能是指定IP的主机的Windows Time服务没有开启。解决方法如上面。
3、有可能是指定IP的主机的防火墙阻止了123端口,控制面板--防火墙--入站规则--右侧一栏点击新建规则--端口--UDP--特定本地端口:123-- 允许链接--全选--随便取个名字。确定开启。
源码及文档下载:http://download.csdn.net/detail/wushang923/5514821
下载内容(大部分本文已给出):
1、SNTP时钟同步,获取指定IP主机系统时间并设置本地时间的程序源码。
2、客户端调用方法。
3、winXP及win7下开启NTP服务方法.pdf
4、NTP协议格式(中文).doc
相关文章推荐
- Gentoo下解决Windows双系统时间不同步问题
- ntp时间同步问题解决方法
- 解决ubuntu16.10和windows10双系统时间不同步的问题
- ntp/系统时钟/硬件时钟/双系统下计算机时间读取的问题
- PHP 获取当前时间以及解决PHP通过date()函数取得时间错误问题
- centos6.4与win7双系统时间同步错误解决办法
- Windows 10+Ubuntu 16.04双系统切换后时间不同步的问题解决
- 解决系统时间与硬件时钟错误
- 支付宝C# RSA签名 报系统找不到指定的文件问题解决
- 【工具用法】如何解决Windows10 和 deepin(Linux)双系统时间的同步问题
- windows下IIS自定义404错误页面系统找不到指定的文件问题的解决方法
- 解决C#时间格式问题,不在受系统时间格式影响
- 双系统下Windows与Linux时间无法同步问题解决
- C# 中 SerialPort.GetPortNames 获取串口号错误的问题及解决方法
- C#中的系统时间获取问题
- 双系统时间同步问题的解决方法
- 解决Windows与Ubuntu双系统时间同步问题
- 解决Windows10和Ubuntu系统时间同步不一致问题
- 如何解决Mysql "发生系统错误2,找不到指定的文件" 的问题(第一次安装使用)
- C:\Windows\system32\MSVCR100.dll 没有被指定在 Windows 上运行,或者它包含错误。请尝试使用原始安装媒体重新安装程序,或联系您的系统管理员或软件供应商以获取支持。【解决办法】