1313using 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