frmMain.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using LYFZ;
  10. using HPSocketCS.Extended;
  11. namespace LYFZ.CloudLoginServer
  12. {
  13. public partial class frmMain : LYFZ.ComponentLibrary.BaseContentsFormMain
  14. {
  15. public frmMain()
  16. {
  17. InitializeComponent();
  18. this.btnSaveSet.Click += btnSaveSet_Click;
  19. this.Load += frmMain_Load;
  20. this.btnStart.Click += btnStart_Click;
  21. this.btnStop.Click += btnStop_Click;
  22. this.TraceListenerLog = new HPSocketCS.Extended.CustomTraceListener(this.txtTraceListenerLog);
  23. this.NetServer.TraceListenerLog = this.TraceListenerLog;
  24. this.NetServer.EventSerializationDataRequest += NetServer_EventSerializationDataRequest;
  25. ServerDataReturn = new LYFZ.CloudServerData.CloudLoginServerReturnProcess(this.loginServerCon);
  26. }
  27. LYFZ.CloudServerData.Model.DBConnection NetworkTrafficStatisticsDbConn = new CloudServerData.Model.DBConnection();
  28. public void SetNetworkTrafficStatisticsDbConn()
  29. {
  30. NetworkTrafficStatisticsDbConn.DataBaseServer = this.loginServerCon.DataBaseServer;
  31. NetworkTrafficStatisticsDbConn.DataBaseName = "NetworkTrafficStatistics";
  32. NetworkTrafficStatisticsDbConn.DataBasePort = this.loginServerCon.DataBasePort;
  33. NetworkTrafficStatisticsDbConn.DataBaseUser = this.loginServerCon.DataBaseUser;
  34. NetworkTrafficStatisticsDbConn.DataBasePass = this.loginServerCon.DataBasePass;
  35. }
  36. #region 网络通信事件处理
  37. LYFZ.CloudServerData.CloudLoginServerReturnProcess ServerDataReturn = null;
  38. /// <summary>
  39. /// 接收到的客户端请求处理事件
  40. /// </summary>
  41. /// <param name="hp_Server"></param>
  42. /// <param name="header"></param>
  43. /// <param name="connId"></param>
  44. /// <param name="bytes"></param>
  45. void NetServer_EventSerializationDataRequest(HPSocketCS.TcpPackServer hp_Server, HPSocketCS.Extended.TcpHeadInfo header, IntPtr connId, byte[] bytes)
  46. {
  47. TransferRequestCommand Command = (TransferRequestCommand)Convert.ToInt32(header.RequestCommand);
  48. DataType MsgDataType = (DataType)header.MsgDataType;
  49. ReturnData returnData;
  50. try
  51. {
  52. RequestData requestData = (RequestData)DataSetSerializerDeserialize.ObjectDeserializeDecompress(bytes);
  53. HPSocketCS.Extended.RequestParameters reqParameters = requestData.AttachedDataToObject<HPSocketCS.Extended.RequestParameters>();
  54. string _EnterpriseID = reqParameters.GetRequsetEnterpriseIDParameter();
  55. SetNetworkTrafficStatisticsDbConn();
  56. try
  57. {
  58. if (this.loginServerCon.NetworkTrafficStatistics)
  59. {
  60. LYFZ.CloudServerData.DAL.NetworkTrafficRecord.AddNetworkTrafficRecordThreadPool(NetworkTrafficStatisticsDbConn, _EnterpriseID, 1, CloudServerData.DAL.NetworkTrafficRecord.FlowDataType.CloudLogIn, bytes.LongLength,5);
  61. }
  62. if (LYFZ.CloudServerData.DAL.Enterprise.VerifyEnterpriseID(_EnterpriseID))
  63. {
  64. if (MsgDataType == DataType.Serialization)
  65. {
  66. returnData = ServerDataReturn.SerializerRequestProcessed(hp_Server, header, connId, requestData);
  67. }
  68. else
  69. {
  70. returnData = new ReturnData("处理请求指令时失败,非法指令");
  71. }
  72. }
  73. else {
  74. returnData = new ReturnData("你输入企业ID不是有效的企业ID");
  75. }
  76. }
  77. catch (Exception ex)
  78. {
  79. returnData = new ReturnData("处理请求指令时出错:" + ex.Message);
  80. }
  81. if (returnData == null)
  82. {
  83. returnData = new ReturnData("请求指令失败,没有返回有效的结果");
  84. }
  85. returnData.ServerStartTimeStamp = LYFZ.Network.TCPNetworkServer.TCP_NetworkServer.ServerStartTimeStamp;
  86. byte[] sendBytes = DataSetSerializerDeserialize.ObjectSerializerCompressionRetBytes(returnData);
  87. if (this.loginServerCon.NetworkTrafficStatistics)
  88. {
  89. LYFZ.CloudServerData.DAL.NetworkTrafficRecord.AddNetworkTrafficRecordThreadPool(NetworkTrafficStatisticsDbConn, _EnterpriseID, 0, CloudServerData.DAL.NetworkTrafficRecord.FlowDataType.CloudLogIn, sendBytes.LongLength,5);
  90. }
  91. hp_Server.AutoUnpackingAndSend(connId, sendBytes, header.TransportID, MsgDataType, Command);
  92. System.GC.Collect();
  93. }
  94. catch (Exception ex)
  95. {
  96. try
  97. {
  98. returnData = new ReturnData("服务器处理客户端请求时出错:" + ex.Message);
  99. returnData.ServerStartTimeStamp = LYFZ.Network.TCPNetworkServer.TCP_NetworkServer.ServerStartTimeStamp;
  100. HPSocketCS.Extended.SystemFileLogs.WriteLogs(returnData.ReturnMessage, this.TraceListenerLog);
  101. byte[] sendBytes = DataSetSerializerDeserialize.ObjectSerializerCompressionRetBytes(returnData);
  102. hp_Server.AutoUnpackingAndSend(connId, sendBytes, header.TransportID, MsgDataType, Command);
  103. }
  104. catch
  105. {
  106. }
  107. }
  108. }
  109. #endregion
  110. #region 服务器网络 侦听处理
  111. /// <summary>
  112. /// 服务器运行日志跟踪侦听器
  113. /// </summary>
  114. HPSocketCS.Extended.CustomTraceListener TraceListenerLog = null;
  115. LYFZ.Network.TCPNetworkServer.TCP_NetworkServer NetServer = new Network.TCPNetworkServer.TCP_NetworkServer();
  116. /// <summary>
  117. /// 开始网络侦听器
  118. /// </summary>
  119. /// <param name="_serverCon"></param>
  120. void StartNetworkServer(LYFZ.CloudServerData.Model.CloudLoginConfig _serverCon)
  121. {
  122. NetServer.StartRun(_serverCon.ServerIP, _serverCon.Port);
  123. }
  124. /// <summary>
  125. /// 停止侦听
  126. /// </summary>
  127. /// <param name="sender"></param>
  128. /// <param name="e"></param>
  129. void btnStop_Click(object sender, EventArgs e)
  130. {
  131. this.NetServer.StopRun();
  132. this.btnStop.Enabled = this.NetServer.hp_Server.IsStarted;
  133. this.btnStart.Enabled = !this.btnStop.Enabled;
  134. }
  135. /// <summary>
  136. /// 开始侦听
  137. /// </summary>
  138. /// <param name="sender"></param>
  139. /// <param name="e"></param>
  140. void btnStart_Click(object sender, EventArgs e)
  141. {
  142. //测试
  143. // ServerDataReturn.InstallationDatabase(new CloudServerData.Model.AuthorizationVerification(),null);
  144. this.loginServerCon.ServerIP = this.txtMonitorIP.Text.Trim();
  145. if (String.IsNullOrEmpty(this.loginServerCon.ServerIP.Trim()))
  146. {
  147. MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbMonitorIP.Text));
  148. return;
  149. }
  150. if (String.IsNullOrEmpty(this.txtMonitorPort.Text.Trim()))
  151. {
  152. MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbMonitorPort.Text));
  153. return;
  154. }
  155. try
  156. {
  157. this.loginServerCon.Port = Convert.ToUInt16(this.txtMonitorPort.Text.Trim());
  158. }
  159. catch
  160. {
  161. MessageBoxCustom.Show(this.lbMonitorPort.Text + "输入的格式不正确");
  162. return;
  163. }
  164. LYFZ.ComponentLibrary.FrmLoadHandling.LoadDoWorkMethod(delegate(object obj, BackgroundWorker backgroundWorker)
  165. {
  166. backgroundWorker.ReportProgress(0, "正在保存...");
  167. if (LYFZ.CloudServerData.SystemConfig.WriteCloudLoginConfig(this.loginServerCon))
  168. {
  169. backgroundWorker.ReportProgress(0, "正在启动网络服务...");
  170. try
  171. {
  172. StartNetworkServer(this.loginServerCon);
  173. }
  174. catch (Exception ex)
  175. {
  176. MessageBoxCustom.Show("启动网络服务失败:" + ex.Message, backgroundWorker: backgroundWorker);
  177. }
  178. }
  179. else
  180. {
  181. MessageBoxCustom.Show("配置保存失败,请重新启动程序后重试", backgroundWorker: backgroundWorker);
  182. }
  183. });
  184. this.btnStart.Enabled = !this.NetServer.hp_Server.IsStarted;
  185. this.btnStop.Enabled = !this.btnStart.Enabled;
  186. }
  187. #endregion
  188. #region 服务器端配置
  189. /// <summary>
  190. /// 当前服务器配置
  191. /// </summary>
  192. LYFZ.CloudServerData.Model.CloudLoginConfig loginServerCon = LYFZ.CloudServerData.SystemConfig.ReadCloudLoginConfig();
  193. void frmMain_Load(object sender, EventArgs e)
  194. {
  195. this.txtDataBaseServer.Text = this.loginServerCon.DataBaseServer;
  196. this.txtDataBasePort.Text = this.loginServerCon.DataBasePort.ToString_s();
  197. this.txtDataBaseName.Text = this.loginServerCon.DataBaseName;
  198. this.txtDataBaseUser.Text = this.loginServerCon.DataBaseUser;
  199. this.txtDataBasePass.Text = this.loginServerCon.DataBasePass;
  200. this.txtMonitorIP.Text = this.loginServerCon.ServerIP.Trim();
  201. this.txtMonitorPort.Text = this.loginServerCon.Port.ToString().Trim();
  202. this.chkNetworkTrafficStatistics.Checked = this.loginServerCon.NetworkTrafficStatistics;
  203. }
  204. void btnSaveSet_Click(object sender, EventArgs e)
  205. {
  206. this.loginServerCon.DataBaseServer = this.txtDataBaseServer.Text.Trim();
  207. this.loginServerCon.DataBaseName = this.txtDataBaseName.Text.Trim();
  208. this.loginServerCon.DataBaseUser = this.txtDataBaseUser.Text.Trim();
  209. this.loginServerCon.DataBasePass = this.txtDataBasePass.Text.Trim();
  210. this.loginServerCon.NetworkTrafficStatistics = this.chkNetworkTrafficStatistics.Checked;
  211. if (String.IsNullOrEmpty(this.txtDataBasePort.Text.Trim()))
  212. {
  213. MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbDataBasePort.Text));
  214. return;
  215. }
  216. try
  217. {
  218. loginServerCon.DataBasePort = Convert.ToInt32(this.txtDataBasePort.Text.Trim());
  219. }
  220. catch
  221. {
  222. MessageBoxCustom.Show(this.lbDataBasePort.Text + "输入的格式不正确");
  223. return;
  224. }
  225. if (String.IsNullOrEmpty(loginServerCon.DataBaseServer))
  226. {
  227. MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbDataBaseServer.Text));
  228. return;
  229. }
  230. if (String.IsNullOrEmpty(loginServerCon.DataBaseName))
  231. {
  232. MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbDataBaseName.Text));
  233. return;
  234. }
  235. if (String.IsNullOrEmpty(loginServerCon.DataBaseUser))
  236. {
  237. MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbDataBaseUser.Text));
  238. return;
  239. }
  240. if (String.IsNullOrEmpty(loginServerCon.DataBasePass))
  241. {
  242. MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbDataBasePass.Text));
  243. return;
  244. }
  245. LYFZ.ComponentLibrary.FrmLoadHandling.LoadDoWorkMethod(delegate(object obj, BackgroundWorker backgroundWorker)
  246. {
  247. backgroundWorker.ReportProgress(0, "正在保存...");
  248. if (LYFZ.CloudServerData.SystemConfig.WriteCloudLoginConfig(loginServerCon))
  249. {
  250. ServerDataReturn = new LYFZ.CloudServerData.CloudLoginServerReturnProcess(this.loginServerCon);
  251. MessageBoxCustom.Show("配置保存成功,需要重启服务器后才能生效", backgroundWorker: backgroundWorker);
  252. }
  253. else
  254. {
  255. MessageBoxCustom.Show("配置保存失败,请重新启动程序后重试", backgroundWorker: backgroundWorker);
  256. }
  257. });
  258. //this.Invoke(new LYFZ.WinAPI.DUpdateControl(delegate()
  259. //{
  260. // }));
  261. }
  262. #endregion
  263. }
  264. }