Skip to content

Commit 03bd245

Browse files
committed
修复提交的BUG
1 parent 3bb7454 commit 03bd245

File tree

1 file changed

+89
-51
lines changed

1 file changed

+89
-51
lines changed

软件系统服务端模版/form1.cs

Lines changed: 89 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -13,30 +13,33 @@
1313
using HslCommunication.BasicFramework;
1414

1515

16-
//============================================================================
17-
// 模版日期 2017-05-18
18-
// 创建人 胡少林
19-
// 版权所有 胡少林
20-
// 授权说明 模版仅授权个人使用,如需商用,请联系[email protected]洽谈
21-
// 说明 JSON组件引用自james newton-king,遵循MIT授权协议
22-
//============================================================================
16+
/******************************************************************************************
17+
*
18+
* 模版日期 2017-05-30
19+
* 创建人 Richard.Hu
20+
* 版权所有 Richard.Hu
21+
* 授权说明 模版仅授权个人使用,如需商用,请联系[email protected]洽谈
22+
* 说明 JSON组件引用自james newton-king,遵循MIT授权协议
23+
* 网络组件 网络组件的版权由Richard.Hu所有
24+
*
25+
********************************************************************************************/
2326

2427

25-
//============================================================================
26-
//
27-
// 注意:本代码的相关操作未作密码验证,如有需要,请自行完成
28-
// 示例:具体示例参照本页面Form1_FormClosing(object sender, FormClosingEventArgs e)方法
29-
//
30-
//============================================================================
28+
/******************************************************************************************
29+
*
30+
* 注意:本代码的相关操作未作密码验证,如有需要,请自行完成
31+
* 示例:具体示例参照本页面Form1_FormClosing(object sender, FormClosingEventArgs e)方法
32+
*
33+
********************************************************************************************/
3134

3235

33-
//============================================================================
34-
//
35-
// 本项目模版不包含 《软件自动更新.exe》
36-
// 如需支持部署环境的自动升级 请联系[email protected]获取
37-
// 软件自动更新.exe 将绑定IP,端口和软件名称后授权销售,30元人民币一组,永久使用
38-
//
39-
//============================================================================
36+
/******************************************************************************************
37+
*
38+
* 本项目模版不包含 《软件自动更新.exe》
39+
* 如需支持部署环境的自动升级 请联系[email protected]获取
40+
* 软件自动更新.exe 将绑定IP,端口和软件名称后授权销售,30元人民币一组,永久使用
41+
*
42+
********************************************************************************************/
4043

4144

4245

@@ -119,11 +122,11 @@ private void 启动服务器ToolStripMenuItem_Click(object sender, EventArgs e)
119122
{
120123
if (!IsSystemStart)
121124
{
122-
Net_Simplify_Server_Initialization();
123-
Net_Socket_Server_Initialization();
124-
Net_SoftUpdate_Server_Initialization();
125-
Net_File_Update_Initialization();
126-
Simple_File_Initiaization();
125+
Net_Simplify_Server_Initialization();//同步网络初始化
126+
Net_Socket_Server_Initialization();//异步网络初始化
127+
Net_SoftUpdate_Server_Initialization();//软件更新引擎初始化
128+
Net_File_Update_Initialization();//软件异地更新引擎初始化
129+
Simple_File_Initiaization();//共享文件引擎初始化
127130
启动服务器ToolStripMenuItem.Text = "已启动";
128131
启动服务器ToolStripMenuItem.BackColor = Color.LimeGreen;
129132
IsSystemStart = true;
@@ -157,7 +160,7 @@ private void 消息发送ToolStripMenuItem_Click(object sender, EventArgs e)
157160
using (FormInputAndAction fiaa = new FormInputAndAction(
158161
m =>
159162
{
160-
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.弹窗消息 + m); return true;
163+
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.弹窗消息 + m); return true;
161164
}))
162165
{
163166
fiaa.ShowDialog();
@@ -234,7 +237,7 @@ private void Net_SoftUpdate_Server_Initialization()
234237
//在服务器的这个路径下,放置客户端运行的所有文件,不要包含settings文件,不要从此处运行
235238
//只放置exe和dll组件,必须放置:软件自动更新.exe
236239
net_soft_update_Server.KeyToken = CommonHeadCode.KeyToken;
237-
net_soft_update_Server.FileUpdatePath = Application.StartupPath + @"\ClientFiles";
240+
net_soft_update_Server.FileUpdatePath = Application.StartupPath + @"\ClientFiles";//客户端文件路径
238241
net_soft_update_Server.ServerStart(CommonLibrary.CommonLibrary.Port_Update_Net);
239242
}
240243
catch (Exception ex)
@@ -282,9 +285,9 @@ private void Net_Simplify_Server_Initialization()
282285
try
283286
{
284287
net_simplify_server.KeyToken = CommonHeadCode.KeyToken;//设置身份令牌
285-
net_simplify_server.LogHelper.LogSaveFileName = Application.StartupPath + @"\simplify_log.txt";
286-
net_simplify_server.ReceiveStringEvent += Net_simplify_server_ReceiveStringEvent;
287-
net_simplify_server.ReceivedBytesEvent += Net_simplify_server_ReceivedBytesEvent;
288+
net_simplify_server.LogHelper.LogSaveFileName = Application.StartupPath + @"\simplify_log.txt";//日志路径
289+
net_simplify_server.ReceiveStringEvent += Net_simplify_server_ReceiveStringEvent;//接收到字符串触发
290+
net_simplify_server.ReceivedBytesEvent += Net_simplify_server_ReceivedBytesEvent;//接收到字节触发
288291
net_simplify_server.ServerStart(CommonLibrary.CommonLibrary.Port_Second_Net);
289292
}
290293
catch (Exception ex)
@@ -309,11 +312,11 @@ private void Net_simplify_server_ReceivedBytesEvent(AsyncStateBase object1, byte
309312
private void Net_simplify_server_ReceiveStringEvent(AsyncStateBase object1, string object2)
310313
{
311314
//必须返回结果,调用SendMessage(object1,[实际数据]);
312-
if(object2.StartsWith("A"))
315+
if (object2.StartsWith("A"))
313316
{
314317
DataProcessingWithStartA(object1, object2);
315318
}
316-
else if(object2.StartsWith("B"))
319+
else if (object2.StartsWith("B"))
317320
{
318321
DataProcessingWithStartB(object1, object2);
319322
}
@@ -334,8 +337,8 @@ private void Net_simplify_server_ReceiveStringEvent(AsyncStateBase object1, stri
334337
/// <summary>
335338
/// A指令块,处理系统基础运行的消息
336339
/// </summary>
337-
/// <param name="object1"></param>
338-
/// <param name="object2"></param>
340+
/// <param name="object1">网络状态对象</param>
341+
/// <param name="object2">实际的数据</param>
339342
private void DataProcessingWithStartA(AsyncStateBase object1, string object2)
340343
{
341344
string headCode = object2.Substring(0, 4);
@@ -494,7 +497,9 @@ private void DataProcessingWithStartB(AsyncStateBase object1, string object2)
494497
#endregion
495498

496499
#region 异步数据传送引擎
497-
//异步客户端管理引擎
500+
/// <summary>
501+
/// 异步客户端管理引擎,维护所有的客户端在线情况,支持主动发数据到所有的客户端
502+
/// </summary>
498503
private Net_Socket_Server net_socket_server = new Net_Socket_Server();
499504
/// <summary>
500505
/// 异步传送数据的初始化
@@ -506,12 +511,12 @@ private void Net_Socket_Server_Initialization()
506511
net_socket_server.KeyToken = CommonHeadCode.KeyToken;//设置身份令牌
507512
net_socket_server.LogHelper.LogSaveFileName = Application.StartupPath + @"\net_log.txt";
508513
net_socket_server.FormatClientOnline = "#IP:{0} Name:{1}";//必须为#开头,具体格式可由自身需求确定
509-
net_socket_server.IsSaveLogClientLineChange = true;
510-
net_socket_server.ClientOnline += Net_socket_server_ClientOnline;
511-
net_socket_server.ClientOffline += Net_socket_server_ClientOffline;
512-
net_socket_server.MessageAlerts += Net_socket_server_MessageAlerts;
513-
net_socket_server.AcceptByte += Net_socket_server_AcceptByte;
514-
net_socket_server.AcceptString += Net_socket_server_AcceptString;
514+
net_socket_server.IsSaveLogClientLineChange = true;//设置客户端上下线是否记录到日志
515+
net_socket_server.ClientOnline += Net_socket_server_ClientOnline;//客户端上线触发
516+
net_socket_server.ClientOffline += Net_socket_server_ClientOffline;//客户端下线触发,包括异常掉线
517+
net_socket_server.MessageAlerts += Net_socket_server_MessageAlerts;//服务器产生提示消息触发
518+
net_socket_server.AcceptByte += Net_socket_server_AcceptByte;//服务器接收到字节数据触发
519+
net_socket_server.AcceptString += Net_socket_server_AcceptString;//服务器接收到字符串数据触发
515520
net_socket_server.ServerStart(CommonLibrary.CommonLibrary.Port_Main_Net);
516521
}
517522
catch (Exception ex)
@@ -581,6 +586,10 @@ private void Net_socket_server_ClientOnline(AsyncStateOne object1)
581586
{ "FileCount", new JValue(net_simple_file_server.File_Count()) }
582587
};
583588
net_socket_server.Send(object1, CommonHeadCode.MultiNetHeadCode.初始化数据 + json.ToString());
589+
590+
591+
//此处决定要不要将在线客户端的数据发送所有客户端
592+
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.所有客户端在线信息 + net_socket_server.AllClients);
584593
//触发上下线功能
585594
Net_socket_clients_change(DateTime.Now.ToString("MM-dd HH:mm:ss ") + object1._IpEnd_Point.Address.ToString() + ":" +
586595
object1.LoginAlias + " 上线");
@@ -596,18 +605,25 @@ private void Net_socket_clients_change(string str)
596605
textBox1.AppendText(str + Environment.NewLine);
597606
listBox1.DataSource = net_socket_server.AllClients.Split('#');
598607
label4.Text = net_socket_server.ClientCount.ToString();
599-
//此处决定要不要将在线客户端的数据发送所有客户端
600-
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.所有客户端在线信息 + net_socket_server.AllClients);
601608
}));
602609
}
603610
}
604611

605612
#endregion
606613

607614
#region 后台计数线程
608-
//=============================================================================
609-
//后台计数的线程
610615

616+
/*********************************************************************************************
617+
*
618+
* 说明 一个后台线程,用来执行一些周期执行的东西
619+
* 注意 它不仅执行每秒触发的代码,也支持每分钟,每天,每月,每年等等
620+
*
621+
********************************************************************************************/
622+
623+
624+
/// <summary>
625+
/// 初始化后台的计数线程
626+
/// </summary>
611627
public void TimeTickInitilization()
612628
{
613629
toolStripStatusLabel_time.Alignment = ToolStripItemAlignment.Right;
@@ -623,10 +639,13 @@ public void ThreadTimeTick()
623639
{
624640
Thread.Sleep(300);//加一个微小的延时
625641
int second = DateTime.Now.Second - 1;
642+
int minute = -1;
643+
int hour = -1;
644+
int day = -1;
626645
Action DTimeShow = delegate
627-
{
628-
toolStripStatusLabel_time.Text = DateTime.Now.ToString();
629-
};
646+
{
647+
toolStripStatusLabel_time.Text = DateTime.Now.ToString();
648+
};
630649

631650
while (IsWindowShow)
632651
{
@@ -642,16 +661,35 @@ public void ThreadTimeTick()
642661
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.时间推送 +
643662
DateTime.Now.ToString("O"));
644663
}
664+
if (minute != DateTime.Now.Minute)
665+
{
666+
minute = DateTime.Now.Minute;
667+
//每分钟执行的代码
668+
}
669+
if (hour != DateTime.Now.Hour)
670+
{
671+
hour = DateTime.Now.Hour;
672+
//每小时执行的代码
673+
}
674+
if (day != DateTime.Now.Day)
675+
{
676+
day = DateTime.Now.Day;
677+
//每天执行的代码
678+
}
645679
}
646680
}
647681

648682

649683
#endregion
650684

651685
#region 共享文件下载块
652-
686+
/// <summary>
687+
/// 共享文件服务器引擎
688+
/// </summary>
653689
private SimpleShareFileServer net_simple_file_server { get; set; } = null;
654-
690+
/// <summary>
691+
/// 共享文件服务引擎初始化
692+
/// </summary>
655693
private void Simple_File_Initiaization()
656694
{
657695
try
@@ -667,7 +705,7 @@ private void Simple_File_Initiaization()
667705
net_simple_file_server.FileChange += Net_simple_file_server_FileChange;
668706
net_simple_file_server.ServerStart(CommonLibrary.CommonLibrary.Port_Share_File);
669707
}
670-
catch(Exception ex)
708+
catch (Exception ex)
671709
{
672710
SoftBasic.ShowExceptionMessage(ex);
673711
}

0 commit comments

Comments
 (0)