C#远程时间同步助手软件设计
C#远程时间同步助手软件设计
本程序才C#语言开发,实现远程时间同步功能,可以将本地时间每隔一段时间与时间服务器时间进行同步!不足之处还望见谅!
软件开发环境:Visual Studio 2010
软件安装简单说明
时间服务器的ntp服务开启状态:
TimeSync.exe时间同步软件
本软件为纯绿色版,不需要安装,可以直接点击运行,编译环境.net4.0
第一步:双击TimeSync.exe
第二步:参数设置--》设置--》输入服务器ip地址和端口以及间隔同步时间---》确定---》重新启动
第三步:参数设置--》设置为自启动(开机自动开启)
一、Win7开启NTP服务
二、程序运行结果展示
三、部分程序代码展示
四、程序源代码下载地址
一、Win7开启NTP服务
在桌面上右击“计算机”--》选择“管理”--》然后选择--》“服务”
选中“Windows Time”,设置为开启,这样就可以将“Windows Time”这一个服务打开。“开始”--》“运行”--》输入“regedit”打开注册表。
找到NetSerVer这一项,具体见插图,里面很详细。
将NetSerVer下Enabled的值设置为 1。
重启电脑系统,就可以使用该电脑作为NTP服务器了
二、程序运行结果展示
1.程序主窗体
2.程序服务器配置
3.程序托盘设计
4.程序所用控件以及布局等等
三、部分程序代码展示
//读取配置信息
public void Read()
{
IniFile cfg = new IniFile(Application.StartupPath + @"\Config\SetConfig.ini");
if (cfg != null)
{
NtpServerIP = cfg.IniReadValue("ServerConfig", "IP");
comboBox1.Items.Add(NtpServerIP);
comboBox1.SelectedIndex = 0;
NtpServerPort = cfg.IniReadValue("ServerConfig", "Port");
textBox3.Text = cfg.IniReadValue("ServerConfig", "Interval");
}
} private void button1_Click(object sender, EventArgs e)
{
textBox1.Clear();
var dt = getTime();
if (dt.ToString("yyyy-MM-dd HH:mm:ss") == "1900-01-01 08:00:00")
{
MessageBox.Show("服务器异常!", "提示");
}
else
{
var Dt = DateTime.Now;
label5.Text = (Dt - dt).ToString("ss");
textBox1.Text = dt.ToString("yyyy-MM-dd HH:mm:ss");
} }
private void btnStartSet_Click(object sender, EventArgs e)
{
if (SetTime())
{ MessageBox.Show("时间同步成功!", "提示"); }
}
public DateTime getTime()
{
var client = new SNTPTimeClient.SNTPTimeClient(NtpServerIP, NtpServerPort);
if (client.Connect())
{
DateTime getEd = client.ReceiveTimestamp;//获取指定IP的系统时间
return getEd;
}
else
{
string date = "1900-01-01 08:00:00";
DateTime getEd = Convert.ToDateTime(date);
return getEd;
}
// SNTPTimeClient.SNTPTimeClient.SetLocalTime(ref st);//设置本地时间
} public bool SetTime()
{
var client = new SNTPTimeClient.SNTPTimeClient(NtpServerIP, NtpServerPort);
if (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.SNTPTimeClient.SetLocalTime(ref st);//设置本地时间
//notifyIcon1.ShowBalloonTip(500, "提示", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ToolTipIcon.Info);
toolStripStatusLabel2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
toolStripStatusLabel3.Text = textBox3.Text.Trim() + "分钟后同步";
return true;
}
else
{
notifyIcon1.ShowBalloonTip(500, "提示","服务器异常", ToolTipIcon.Info);
return false;
}
}
//最小化系统托盘图标可见
private void FrmMain_SizeChanged(object sender, EventArgs e)
{
ShowInTaskbar = false;
notifyIcon1.Visible = true;
if (WindowState == FormWindowState.Minimized)
notifyIcon1.ShowBalloonTip(500,"提示","小飞时间同步程序正在运行",ToolTipIcon.Info);
} //双击托盘图标
private void notifyIcon1_DoubleClick(object sender, EventArgs e)
{
if (WindowState != FormWindowState.Minimized) return;
Show();
WindowState = FormWindowState.Normal;
notifyIcon1.Visible = false;
ShowInTaskbar = true;
} //拦截关闭按钮为最小化
private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
WindowState = FormWindowState.Minimized;
notifyIcon1.ShowBalloonTip(500, "提示", "时间同步程序正在运行", ToolTipIcon.Info);
} private void 显示主窗体ToolStripMenuItem_Click(object sender, EventArgs e)
{
WindowState = FormWindowState.Normal;
} private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("是否退出程序?", "退出", MessageBoxButtons.OKCancel) != DialogResult.OK) return;
Dispose();
Close();
} private void timerLocal_Tick(object sender, EventArgs e)
{
textBox2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//var sec = STimer / 1000;
//var dt = DateTime.Parse(Dt);
//toolStripStatusLabel2.Text = dt.AddSeconds(sec).ToString("yyyy-MM-dd HH:mm:ss"); } private void timerNet_Tick(object sender, EventArgs e)
{
SetTime();
} private void 退出系统ToolStripMenuItem_Click(object sender, EventArgs e)
{
退出ToolStripMenuItem_Click(sender,e);
} private void 服务器参数ToolStripMenuItem_Click(object sender, EventArgs e)
{
FrmSeting frmseting = new FrmSeting();
frmseting.Show();
} //自启动
public static bool SetSelfStart()
{
try
{
var exeDir = Application.ExecutablePath;
var rk = Registry.LocalMachine;
var softWare = rk.OpenSubKey("SOFTWARE");
var microsoft = softWare.OpenSubKey("Microsoft");
var windows = microsoft.OpenSubKey("Windows");
var current = windows.OpenSubKey("CurrentVersion");
var run = current.OpenSubKey(@"Run", true);
run.SetValue("时间同步程序", exeDir);
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return false;
}
} //取消自启动
public static bool CancelSelfStart()
{
try
{
var rk = Registry.LocalMachine;
var softWare = rk.OpenSubKey("SOFTWARE");
var microsoft = softWare.OpenSubKey("Microsoft");
var windows = microsoft.OpenSubKey("Windows");
var current = windows.OpenSubKey("CurrentVersion");
var run = current.OpenSubKey(@"Run", true);
run.DeleteValue("时间同步程序");
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return false;
}
} private void 设置为自启动ToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (SetSelfStart())
{
MessageBox.Show("加入自启动成功", "提示", MessageBoxButtons.OK);
}
} private void 取消自启动ToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (CancelSelfStart())
{
MessageBox.Show("成功取消自启动", "提示", MessageBoxButtons.OK);
}
}
四、程序源代码下载地址
程序工程下载地址 http://download.csdn.net/detail/coderjyf/9545672
C#远程时间同步助手软件设计的更多相关文章
- 架构设计:一种远程调用服务的设计构思(zookeeper的一种应用实践)
在深入学习zookeeper我想先给大家介绍一个和zookeeper相关的应用实例,我把这个实例命名为远程调用服务.通过对这种应用实例的描述,我们会对zookeeper应用场景会有深入的了解. 远程调 ...
- Android远程桌面助手
很早之前,做过一个<WinCE远程桌面助手>,在没有屏幕或者在调试LCD驱动时,发挥了很大作用,平日开发也是必备.后来还被网友用于处理一些疑难问题,如无法输入开机密码时可通过该工具远程输入 ...
- Android远程桌面助手(B1309)
修改了窗口缩放的处理,支持Android Car等非常规分辨率的Android设备: 修改了获取Android端软件版本的方法,优化了APK的升级逻辑: 优化了远程输入法功能,支持利用PC端输入法快速 ...
- Week2 Teamework from Z.XML - 必应缤纷桌面助手 - 软件分析与用户需求调查
软件分析与用户需求调查(2013) from Z.XML 本次团队作业要求: 通过定性, 定量地分析, 总结和评定某软件是否满足了目标用户的需求,并把分析的过程和结果用博客表达出来. 选题:必应缤纷桌 ...
- Ubuntu远程桌面助手(URDC)
目前自动驾驶域控制器项目中使用了英伟达的Orin芯片+Ubuntu20.04系统.域控属于典型的Headless设备,开发调试时需要连接显示器(HDMI/DP).鼠标和键盘,或者使用NoMachine ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- 我的敏捷、需求分析、UML、软件设计电子书 - 下载(持续更新中)
我将所有我的电子书汇总在一起,方便大家下载!(持续更新) 文档保存在我的网站——软件知识原创基地上(www.umlonline.org),请放心下载. 1)软件设计是怎样炼成的?(2014-4-1 发 ...
- 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)
邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...
- C#软件设计——小话设计模式原则之:依赖倒置原则DIP
前言:很久之前就想动笔总结下关于软件设计的一些原则,或者说是设计模式的一些原则,奈何被各种bootstrap组件所吸引,一直抽不开身.群里面有朋友问博主是否改行做前端了,呵呵,其实博主是想做“全战”, ...
随机推荐
- 个人整理的一些web前端面试题
1.一个网页从开始请求到最终显示的完整过程? 获取输入网址 将网址解析为ip地址 建立tcp连接 发送http请求 返回响应 解析并显示. 2.简述对CSS盒子模型的理解? width=margin- ...
- UP Board 网络设置一本通
前言 原创文章,转载引用务必注明链接,水平有限,欢迎指正. 本文环境:ubilinux 3.0 on UP Board 本文使用Markdown写成,为获得更好的阅读体验和正常的图片.链接,请访问我的 ...
- 【转】真正从零开始,TensorFlow详细安装入门图文教程!(帮你完成那个最难的从0到1)
AI这个概念好像突然就火起来了,年初大比分战胜李世石的AlphaGo成功的吸引了大量的关注,但其实看看你的手机上的语音助手,相机上的人脸识别,今日头条上帮你自动筛选出来的新闻,还有各大音乐软件的歌曲& ...
- linux大文件分割 split命令
inux split 命令 功能说明:切割文件. 语 法:split [--help][--version][-][-b ][-C ][-l ][要切割的文件][输出文件名] 补充说明:split可将 ...
- 一个php 字符串判断问题
先看代码 你觉得下面的代码会输出什么结果: <?php $a = "10"; $b = "1e1"; if($a == $b ) { echo " ...
- CH模拟赛 皇后游戏
/* 做的时候手推了一下n=2的四种情况,再排一下序就可以了,证明不是很严谨,但我想这就行了,毕竟全是套路 */ #include<iostream> #include<cstdio ...
- python模块(json和pickle模块)
json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...
- [Evolutionary Algorithm] 进化算法简介
进化算法,也被成为是演化算法(evolutionary algorithms,简称EAs),它不是一个具体的算法,而是一个“算法簇”.进化算法的产生的灵感借鉴了大自然中生物的进化操作,它一般包括基因编 ...
- Python 自动化入门 day1复习
一.Python介绍 Python是1989年圣诞节期间龟叔创造的一种解释型语言. 最新的TIOBE排行榜 目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack W ...
- 安装Axure7.0,完整教程,有验证码和汉化包
以下内容由Axure中文网 » Axure7.0中文汉化语言包下载 axure汉化包 改编,特此声明 1.下载安装包 官方下载页面: http://www.axure.com/download 官网直 ...