123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using LYFZ;
- using HPSocketCS.Extended;
- namespace LYFZ.ERPCloudServer
- {
- public partial class frmMain : LYFZ.ComponentLibrary.BaseContentsFormMain
- {
- public frmMain()
- {
- InitializeComponent();
- this.btnSaveSet.Click += btnSaveSet_Click;
- this.Load += frmMain_Load;
- this.btnStart.Click += btnStart_Click;
- this.btnStop.Click += btnStop_Click;
- this.TraceListenerLog = new HPSocketCS.Extended.CustomTraceListener(this.txtTraceListenerLog);
- this.NetServer.TraceListenerLog = this.TraceListenerLog;
- this.NetServer.EventSerializationDataRequest += NetServer_EventSerializationDataRequest;
- this.NetServer.EventFileDataRequest += NetServer_EventFileDataRequest;
- this.btnBrowse.Click += btnBrowse_Click;
- this.btnBrowseInstallation.Click += btnBrowseInstallation_Click;
- this.btnBrowseFileDirPath.Click += btnBrowseFileDirPath_Click;
- this.btnBrowseBakFileDirPath.Click += btnBrowseBakFileDirPath_Click;
- ServerDataReturn = new LYFZ.CloudServerData.BJBServerDataReturnProcess(this.bjbServerCon);
- this.btnRefreshList.Click += btnRefreshList_Click;
-
- }
- void btnRefreshList_Click(object sender, EventArgs e)
- {
- RefreshClientList();
- }
- void RefreshClientList()
- {
- this.listbxClientList.Items.Clear();
- if (this.NetServer.hp_Server.State == HPSocketCS.ServiceState.Started)
- {
- IntPtr[] connIDs= this.NetServer.hp_Server.GetAllConnectionIDs();
- if (connIDs != null)
- {
- foreach (IntPtr ptr in connIDs)
- {
- HPSocketCS.Extended.ClientInfo ci = this.NetServer.hp_Server.GetClientInfo(ptr);
- ItemValue item;
- if (ci != null)
- {
- item = new ItemValue(ci, String.Format("[{0}]{1}:{2}{3}", ci.ConnId.ToInt64(), ci.IpAddress, ci.Port, ci.Message));
- }
- else
- {
- item = new ItemValue(null, String.Format("[{0}]{1}", ptr.ToInt64(), "未知道连接"));
- }
- this.listbxClientList.Items.Add(item);
- }
- }
-
- }
- else {
- MessageBoxCustom.Show("服务器网络未启动");
- }
- }
- LYFZ.CloudServerData.Model.DBConnection NetworkTrafficStatisticsDbConn = new CloudServerData.Model.DBConnection();
- public void SetNetworkTrafficStatisticsDbConn()
- {
- NetworkTrafficStatisticsDbConn.DataBaseServer = this.bjbServerCon.BenJi_DataBaseServer;
- NetworkTrafficStatisticsDbConn.DataBaseName = "NetworkTrafficStatistics";
- NetworkTrafficStatisticsDbConn.DataBasePort = this.bjbServerCon.BenJi_DataBasePort;
- NetworkTrafficStatisticsDbConn.DataBaseUser = this.bjbServerCon.BenJi_DataBaseUser;
- NetworkTrafficStatisticsDbConn.DataBasePass = this.bjbServerCon.BenJi_DataBasePass;
- }
- void NetServer_EventFileDataRequest(HPSocketCS.TcpPackServer hp_Server, TcpHeadInfo header, TcpTailInfo tail, IntPtr connId, byte[] bytes)
- {
- try
- {
- if (this.bjbServerCon.NetworkTrafficStatistics)
- {
- if (!String.IsNullOrEmpty(tail.FileName.Trim()))
- {
- string[] tempValues = tail.FileName.Split('|');
- string _EnterpriseID = "LYFZFileNull";
- if (tempValues.Length >= 2)
- {
- _EnterpriseID = tempValues[1];
- }
- int _FlowType = 0;
- if ((FileRequestType)tail.RequestType == FileRequestType.Download)
- {
- _FlowType = 0;
- }
- else
- {
- _FlowType = 1;
- }
- SetNetworkTrafficStatisticsDbConn();
- LYFZ.CloudServerData.DAL.NetworkTrafficRecord.AddNetworkTrafficRecordThreadPool(NetworkTrafficStatisticsDbConn, _EnterpriseID, _FlowType, CloudServerData.DAL.NetworkTrafficRecord.FlowDataType.File, bytes.LongLength, ServerDataReturn.Multiple);
- //SystemFileLogs.WriteLogs("文件传输流量统计已插入记录", this.TraceListenerLog);
- }
- else {
- SystemFileLogs.WriteLogs("文件传输流量统计时,文件名为空", this.TraceListenerLog);
- }
- }
- else {
- // SystemFileLogs.WriteLogs("未开启文件传输流量统计", this.TraceListenerLog);
- }
- }
- catch (Exception ex){
- SystemFileLogs.WriteLogs("插入文件传输流量记录时出错:"+ex.Message, this.TraceListenerLog);
- }
- }
- #region 网络通信事件处理
- LYFZ.CloudServerData.BJBServerDataReturnProcess ServerDataReturn = null;
- /// <summary>
- /// 接收到的客户端请求处理事件
- /// </summary>
- /// <param name="hp_Server"></param>
- /// <param name="header"></param>
- /// <param name="connId"></param>
- /// <param name="bytes"></param>
- void NetServer_EventSerializationDataRequest(HPSocketCS.TcpPackServer hp_Server, HPSocketCS.Extended.TcpHeadInfo header, IntPtr connId, byte[] bytes)
- {
- TransferRequestCommand Command = (TransferRequestCommand)Convert.ToInt32(header.RequestCommand);
- DataType MsgDataType = (DataType)header.MsgDataType;
- if (MsgDataType == DataType.SQLHelper)
- {
- ServerDataReturn.SQLHelperDataRequestProcessed(hp_Server, header, connId, bytes);
- }
- else
- {
- ReturnData returnData;
- try
- {
- SetNetworkTrafficStatisticsDbConn();
- RequestData requestData = (RequestData)DataSetSerializerDeserialize.ObjectDeserializeDecompress(bytes);
- HPSocketCS.Extended.RequestParameters reqParameters = requestData.AttachedDataToObject<HPSocketCS.Extended.RequestParameters>();
- string _EnterpriseID = reqParameters.GetRequsetEnterpriseIDParameter();
- try
- {
-
- if (this.bjbServerCon.NetworkTrafficStatistics)
- {
- LYFZ.CloudServerData.DAL.NetworkTrafficRecord.AddNetworkTrafficRecordThreadPool(NetworkTrafficStatisticsDbConn, _EnterpriseID, 1, CloudServerData.DAL.NetworkTrafficRecord.FlowDataType.Message, bytes.LongLength, ServerDataReturn.Multiple);
- }
- if (MsgDataType == DataType.Serialization)
- {
- returnData = ServerDataReturn.SerializerRequestProcessed(hp_Server, header, connId, requestData);
- }
- else
- {
- returnData = new ReturnData("处理请求指令时失败,非法指令");
- }
- }
- catch (Exception ex)
- {
- returnData = new ReturnData("处理请求指令时出错:" + ex.Message);
- }
- if (returnData == null)
- {
- returnData = new ReturnData("请求指令失败,没有返回有效的结果");
- }
- returnData.ServerStartTimeStamp = LYFZ.Network.TCPNetworkServer.TCP_NetworkServer.ServerStartTimeStamp;
- byte[] sendBytes = DataSetSerializerDeserialize.ObjectSerializerCompressionRetBytes(returnData);
- if (this.bjbServerCon.NetworkTrafficStatistics)
- {
- LYFZ.CloudServerData.DAL.NetworkTrafficRecord.AddNetworkTrafficRecordThreadPool(NetworkTrafficStatisticsDbConn, _EnterpriseID, 0, CloudServerData.DAL.NetworkTrafficRecord.FlowDataType.Message, sendBytes.LongLength, ServerDataReturn.Multiple);
- }
- hp_Server.AutoUnpackingAndSend(connId, sendBytes, header.TransportID, MsgDataType, Command);
- System.GC.Collect();
- }
- catch (Exception ex)
- {
- try
- {
- returnData = new ReturnData("服务器处理客户端请求时出错:" + ex.Message);
- returnData.ServerStartTimeStamp = LYFZ.Network.TCPNetworkServer.TCP_NetworkServer.ServerStartTimeStamp;
- HPSocketCS.Extended.SystemFileLogs.WriteLogs(returnData.ReturnMessage, this.TraceListenerLog);
- byte[] sendBytes = DataSetSerializerDeserialize.ObjectSerializerCompressionRetBytes(returnData);
- hp_Server.AutoUnpackingAndSend(connId, sendBytes, header.TransportID, MsgDataType, Command);
- }
- catch
- {
- }
- }
- }
- }
- #endregion
- #region 服务器网络 侦听处理
- /// <summary>
- /// 服务器运行日志跟踪侦听器
- /// </summary>
- HPSocketCS.Extended.CustomTraceListener TraceListenerLog = null;
- LYFZ.Network.TCPNetworkServer.TCP_NetworkServer NetServer = new Network.TCPNetworkServer.TCP_NetworkServer();
- /// <summary>
- /// 开始网络侦听器
- /// </summary>
- /// <param name="_serverCon"></param>
- void StartNetworkServer(LYFZ.CloudServerData.Model.BJBCloudServerConfig _serverCon)
- {
- NetServer.StartRun(_serverCon.ServerIP, _serverCon.Port);
- }
- /// <summary>
- /// 停止侦听
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- void btnStop_Click(object sender, EventArgs e)
- {
- this.NetServer.StopRun();
- this.btnStop.Enabled = this.NetServer.hp_Server.IsStarted;
- this.btnStart.Enabled = !this.btnStop.Enabled;
- }
- /// <summary>
- /// 开始侦听
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- void btnStart_Click(object sender, EventArgs e)
- {
- //测试
- // ServerDataReturn.InstallationDatabase(new CloudServerData.Model.AuthorizationVerification(),null);
- this.bjbServerCon.ServerIP = this.txtMonitorIP.Text.Trim();
- if (String.IsNullOrEmpty(this.bjbServerCon.ServerIP.Trim()))
- {
- MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbMonitorIP.Text));
- return;
- }
- if (String.IsNullOrEmpty(this.txtMonitorPort.Text.Trim()))
- {
- MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbMonitorPort.Text));
- return;
- }
- try
- {
- this.bjbServerCon.Port = Convert.ToUInt16(this.txtMonitorPort.Text.Trim());
- }
- catch
- {
- MessageBoxCustom.Show(this.lbMonitorPort.Text + "输入的格式不正确");
- return;
- }
- HPSocketCS.TcpServer.ServerFileDirPath = this.bjbServerCon.UploadFileDirPath;
- LYFZ.ComponentLibrary.FrmLoadHandling.LoadDoWorkMethod(delegate(object obj, BackgroundWorker backgroundWorker)
- {
- backgroundWorker.ReportProgress(0, "正在保存...");
- if (LYFZ.CloudServerData.SystemConfig.WriteBJBCloudServerConfig(this.bjbServerCon))
- {
- backgroundWorker.ReportProgress(0, "正在启动网络服务...");
- try
- {
- ServerDataReturn.LoadEnterpriseAndCloudServer();
- StartNetworkServer(this.bjbServerCon);
- }
- catch (Exception ex)
- {
- MessageBoxCustom.Show("启动网络服务失败:" + ex.Message, backgroundWorker: backgroundWorker);
- }
- }
- else
- {
- MessageBoxCustom.Show("配置保存失败,请重新启动程序后重试", backgroundWorker: backgroundWorker);
- }
- });
- this.btnStart.Enabled = !this.NetServer.hp_Server.IsStarted;
- this.btnStop.Enabled = !this.btnStart.Enabled;
- }
- #endregion
- #region 服务器端配置
- void btnBrowse_Click(object sender, EventArgs e)
- {
- FolderBrowserDialog fd = new FolderBrowserDialog();
- if (fd.ShowDialog() == DialogResult.OK)
- {
- this.txtDBBakPath.Text = fd.SelectedPath;
- }
- }
- void btnBrowseInstallation_Click(object sender, EventArgs e)
- {
- FolderBrowserDialog fd = new FolderBrowserDialog();
- if (fd.ShowDialog() == DialogResult.OK)
- {
- this.txtinstallation.Text = fd.SelectedPath;
- }
- }
- void btnBrowseFileDirPath_Click(object sender, EventArgs e)
- {
- FolderBrowserDialog fd = new FolderBrowserDialog();
- if (fd.ShowDialog() == DialogResult.OK)
- {
- this.txtFileDirPath.Text = fd.SelectedPath;
- }
- }
- void btnBrowseBakFileDirPath_Click(object sender, EventArgs e)
- {
- FolderBrowserDialog fd = new FolderBrowserDialog();
- if (fd.ShowDialog() == DialogResult.OK)
- {
- this.txtBakFileDirPath.Text = fd.SelectedPath;
- }
- }
- /// <summary>
- /// 当前服务器配置
- /// </summary>
- LYFZ.CloudServerData.Model.BJBCloudServerConfig bjbServerCon = LYFZ.CloudServerData.SystemConfig.ReadBJBCloudServerConfig();
- void frmMain_Load(object sender, EventArgs e)
- {
- this.txtDataBaseServer.Text = this.bjbServerCon.DataBaseServer;
- this.txtDataBasePort.Text = this.bjbServerCon.DataBasePort.ToString_s();
- this.txtDataBaseName.Text = this.bjbServerCon.DataBaseName;
- this.txtDataBaseUser.Text = this.bjbServerCon.DataBaseUser;
- this.txtDataBasePass.Text = this.bjbServerCon.DataBasePass;
- this.txtBenJiIP.Text = this.bjbServerCon.BenJi_DataBaseServer;
- this.txtBenJiDataBasePort.Text = this.bjbServerCon.BenJi_DataBasePort.ToString_s();
- this.txtBenJiDataBaseUser.Text = this.bjbServerCon.BenJi_DataBaseUser;
- this.txtBenJiDataBasePass.Text = this.bjbServerCon.BenJi_DataBasePass;
- this.txtMonitorIP.Text = this.bjbServerCon.ServerIP.Trim();
- this.txtMonitorPort.Text = this.bjbServerCon.Port.ToString().Trim();
- this.txtDBBakPath.Text = this.bjbServerCon.DatabaseBackupPath;
- this.txtinstallation.Text = this.bjbServerCon.DatabaseInstallationPath;
- this.txtFileDirPath.Text = this.bjbServerCon.UploadFileDirPath;
- this.txtBakFileDirPath.Text = this.bjbServerCon.BakUploadFileDirPath;
- this.chkNetworkTrafficStatistics.Checked = this.bjbServerCon.NetworkTrafficStatistics;
- this.txtServerID.Text = this.bjbServerCon.CurrentServerID.ToString();
- this.txtWebAPIDirPath.Text = this.bjbServerCon.WebAPIDirPath;
- this.txtSiteName.Text = this.bjbServerCon.SiteName;
- this.txtAppPoolId.Text = this.bjbServerCon.AppPoolId;
- this.txtWebAPIPort.Text = this.bjbServerCon.WebAPIPort.ToString();
- ServerDataReturn = new LYFZ.CloudServerData.BJBServerDataReturnProcess(this.bjbServerCon);
- }
- void btnSaveSet_Click(object sender, EventArgs e)
- {
- this.bjbServerCon.DataBaseServer = this.txtDataBaseServer.Text.Trim();
- this.bjbServerCon.DataBaseName = this.txtDataBaseName.Text.Trim();
- this.bjbServerCon.DataBaseUser = this.txtDataBaseUser.Text.Trim();
- this.bjbServerCon.DataBasePass = this.txtDataBasePass.Text.Trim();
- this.bjbServerCon.BenJi_DataBaseServer = this.txtBenJiIP.Text.Trim();
- this.bjbServerCon.BenJi_DataBaseUser = this.txtBenJiDataBaseUser.Text.Trim();
- this.bjbServerCon.BenJi_DataBasePass = this.txtBenJiDataBasePass.Text.Trim();
- this.bjbServerCon.DatabaseBackupPath = this.txtDBBakPath.Text.Trim();
- this.bjbServerCon.DatabaseInstallationPath = this.txtinstallation.Text.Trim();
- this.bjbServerCon.UploadFileDirPath = this.txtFileDirPath.Text.Trim();
- this.bjbServerCon.BakUploadFileDirPath = this.txtBakFileDirPath.Text.Trim();
- this.bjbServerCon.NetworkTrafficStatistics = this.chkNetworkTrafficStatistics.Checked;
- try
- {
- this.bjbServerCon.CurrentServerID = Convert.ToInt64(this.txtServerID.Text.Trim());
- }
- catch
- {
- MessageBoxCustom.Show("本机服务器ID输入的格式不正确");
- return;
- }
- this.bjbServerCon.WebAPIDirPath = this.txtWebAPIDirPath.Text.Trim();
- this.bjbServerCon.SiteName = this.txtSiteName.Text.Trim();
- this.txtAppPoolId.Text = this.bjbServerCon.AppPoolId;
- try
- {
- this.bjbServerCon.WebAPIPort = Convert.ToInt32(this.txtWebAPIPort.Text.Trim());
- }
- catch
- {
- MessageBoxCustom.Show("Web输入的格式不正确");
- return;
- }
- if (String.IsNullOrEmpty(this.txtDataBasePort.Text.Trim()))
- {
- MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbDataBasePort.Text));
- return;
- }
- try
- {
- bjbServerCon.DataBasePort = Convert.ToInt32(this.txtDataBasePort.Text.Trim());
- }
- catch
- {
- MessageBoxCustom.Show(this.lbDataBasePort.Text + "输入的格式不正确");
- return;
- }
- if (String.IsNullOrEmpty(this.txtBenJiDataBasePort.Text.Trim()))
- {
- MessageBoxCustom.Show("本机数据库端口号不能为空");
- return;
- }
- try
- {
- bjbServerCon.BenJi_DataBasePort = Convert.ToInt32(this.txtBenJiDataBasePort.Text.Trim());
- }
- catch
- {
- MessageBoxCustom.Show("本机数据库端口输入的格式不正确");
- return;
- }
- if (String.IsNullOrEmpty(bjbServerCon.DataBaseServer))
- {
- MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbDataBaseServer.Text));
- return;
- }
- if (String.IsNullOrEmpty(bjbServerCon.DataBaseName))
- {
- MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbDataBaseName.Text));
- return;
- }
- if (String.IsNullOrEmpty(bjbServerCon.DataBaseUser))
- {
- MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbDataBaseUser.Text));
- return;
- }
- if (String.IsNullOrEmpty(bjbServerCon.DataBasePass))
- {
- MessageBoxCustom.Show(LYFZ.WinAPI.UserTips.GetCanNotBeEmptyTips(this.lbDataBasePass.Text));
- return;
- }
- LYFZ.ComponentLibrary.FrmLoadHandling.LoadDoWorkMethod(delegate(object obj, BackgroundWorker backgroundWorker)
- {
- backgroundWorker.ReportProgress(0, "正在保存...");
- if (LYFZ.CloudServerData.SystemConfig.WriteBJBCloudServerConfig(bjbServerCon))
- {
- ServerDataReturn = new LYFZ.CloudServerData.BJBServerDataReturnProcess(this.bjbServerCon);
- MessageBoxCustom.Show("配置保存成功,需要重启服务器后才能生效", backgroundWorker: backgroundWorker);
- }
- else
- {
- MessageBoxCustom.Show("配置保存失败,请重新启动程序后重试", backgroundWorker: backgroundWorker);
- }
- });
-
- //this.Invoke(new LYFZ.WinAPI.DUpdateControl(delegate()
- //{
- // }));
- }
- #endregion
-
- }
- }
|