@@ -132,6 +132,7 @@ private void 启动服务器ToolStripMenuItem_Click(object sender, EventArgs e)
132132 Net_SoftUpdate_Server_Initialization ( ) ; //软件更新引擎初始化
133133 Net_File_Update_Initialization ( ) ; //软件异地更新引擎初始化
134134 Simple_File_Initiaization ( ) ; //共享文件引擎初始化
135+ Net_Udp_Server_Initialization ( ) ; //UDP引擎服务初始化
135136 启动服务器ToolStripMenuItem . Text = "已启动" ;
136137 启动服务器ToolStripMenuItem . BackColor = Color . LimeGreen ;
137138 IsSystemStart = true ;
@@ -508,6 +509,17 @@ private void DataProcessingWithStartB(AsyncStateBase object1, string object2)
508509 net_simplify_server . SendMessage ( object1 , "成功" ) ;
509510 RuntimeLogHelper . SaveWarnning ( "建议反馈日志清空" ) ;
510511 }
512+ else if ( headCode == CommonHeadCode . SimplifyHeadCode . UDP日志查看 )
513+ {
514+ net_simplify_server . SendMessage ( object1 , net_udp_server . LogHelper . GetLogText ( ) ) ;
515+ RuntimeLogHelper . SaveInformation ( "UDP日志查看" ) ;
516+ }
517+ else if ( headCode == CommonHeadCode . SimplifyHeadCode . UDP日志清空 )
518+ {
519+ net_udp_server . LogHelper . ClearLogText ( ) ;
520+ net_simplify_server . SendMessage ( object1 , "成功" ) ;
521+ RuntimeLogHelper . SaveWarnning ( "UDP日志清空" ) ;
522+ }
511523 else
512524 {
513525 net_simplify_server . SendMessage ( object1 , object2 ) ;
@@ -771,6 +783,57 @@ private void Net_simple_file_server_FileChange()
771783
772784 #endregion
773785
786+ #region Udp网络通信块
787+
788+ /*********************************************************************************************************
789+ *
790+ * 说明 一个用于网络间通信的UDP服务引擎,客户端调用UserClient.Net_Udp_Client.SendMessage(data);发送
791+ * 详细请参考客户端FormMainWindow中的udp发送说明
792+ * 特点 该Udp引擎非常健壮,接收失败了会抛弃本次接收,自动进入下一轮接收。
793+ * 安全 本引擎含有数据长度校验机制,确保服务器接收到的数据是正确的,没有丢失的
794+ * 注意 如果服务器配置了ReceiveCacheLength = 1024,那么客户端发送的字符串数据长度不能超过1000,否则服务器会自动丢弃,可在日志中查看
795+ * 警告 如果想要你自己的软件支持向本引擎访问,必须使用该网络组件实现,参考客户端定义,否则发送失败
796+ *
797+ **********************************************************************************************************/
798+
799+
800+ /// <summary>
801+ /// 服务器的UDP核心引擎
802+ /// </summary>
803+ private UdpNetServer net_udp_server { get ; set ; }
804+
805+ private void Net_Udp_Server_Initialization ( )
806+ {
807+ try
808+ {
809+ net_udp_server = new UdpNetServer ( ) ;
810+ net_udp_server . LogHelper . LogSaveFileName = Application . StartupPath + @"\udp_log.txt" ; //日志路径
811+ net_udp_server . ReceiveCacheLength = 1024 ; //单次接收数据的缓冲长度
812+ net_udp_server . AcceptByte += Net_udp_server_AcceptByte ; //接收到字节数据的时候触发事件
813+ net_udp_server . AcceptString += Net_udp_server_AcceptString ; //接收到字符串数据的时候触发事件
814+ net_udp_server . ServerStart ( CommonLibrary . CommonLibrary . Port_Udp_Server ) ;
815+ }
816+ catch ( Exception ex )
817+ {
818+ SoftBasic . ShowExceptionMessage ( ex ) ;
819+ }
820+ }
821+
822+ private void Net_udp_server_AcceptString ( AsyncStateOne object1 , string object2 )
823+ {
824+ //此处为测试
825+ Invoke ( new Action ( ( ) =>
826+ {
827+ textBox1 . AppendText ( $ "{ DateTime . Now . ToString ( "MM-dd HH:mm:ss " ) } 来自IP:{ object1 . _IpEnd_Point . Address . ToString ( ) } 内容:{ object2 } { Environment . NewLine } ") ;
828+ } ) ) ;
829+ }
830+
831+ private void Net_udp_server_AcceptByte ( AsyncStateOne object1 , byte [ ] object2 )
832+ {
833+ //具体用法参考上面字符串方法
834+ }
835+
836+ #endregion
774837
775838 #region 访问PLC块示例代码
776839
0 commit comments