首页 技术 正文
技术 2022年11月19日
0 收藏 940 点赞 3,173 浏览 4990 个字

C#远程时间同步助手软件设计

本程序才C#语言开发,实现远程时间同步功能,可以将本地时间每隔一段时间与时间服务器时间进行同步!不足之处还望见谅!

软件开发环境:Visual Studio 2010

软件安装简单说明

时间服务器的ntp服务开启状态:

TimeSync.exe时间同步软件
本软件为纯绿色版,不需要安装,可以直接点击运行,编译环境.net4.0

第一步:双击TimeSync.exe
第二步:参数设置–》设置–》输入服务器ip地址和端口以及间隔同步时间—》确定—》重新启动
第三步:参数设置–》设置为自启动(开机自动开启)

一、Win7开启NTP服务

二、程序运行结果展示

三、部分程序代码展示

四、程序源代码下载地址

一、Win7开启NTP服务

在桌面上右击“计算机”–》选择“管理”–》然后选择–》“服务

C#远程时间同步助手软件设计

选中“Windows Time”,设置为开启,这样就可以将“Windows Time”这一个服务打开。“开始”–》“运行”–》输入“regedit”打开注册表。

找到NetSerVer这一项,具体见插图,里面很详细。

C#远程时间同步助手软件设计C#远程时间同步助手软件设计

将NetSerVer下Enabled的值设置为 1。

重启电脑系统,就可以使用该电脑作为NTP服务器了

二、程序运行结果展示

1.程序主窗体

C#远程时间同步助手软件设计

2.程序服务器配置

C#远程时间同步助手软件设计

3.程序托盘设计

C#远程时间同步助手软件设计

4.程序所用控件以及布局等等

C#远程时间同步助手软件设计

三、部分程序代码展示

//读取配置信息
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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,111
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,584
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,431
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,203
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,838
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,922