/*********************************************************************************************** * * 方法说明: 当接收到来自客户端的数据的时候触发的方法 * 特别注意: 如果你的数据处理中引发了异常,应用程序将会奔溃,SendMessage异常系统将会自动处理 * ************************************************************************************************/ /// <summary> /// 接收到来自客户端的字符串数据,然后将结果发送回客户端,注意:必须回发结果 /// </summary> /// <param name="state">客户端的地址</param> /// <param name="handle">用于自定义的指令头,可不用,转而使用data来区分</param> /// <param name="data">接收到的服务器的数据</param> private void Net_simplify_server_ReceiveStringEvent(AsyncStateOne state, NetHandle handle, string data) { /******************************************************************************************* * * 说明:同步消息处理总站,应该根据不同的消息设置分流到不同的处理方法 * * 注意:处理完成后必须调用 net_simplify_server.SendMessage(state, customer, "处理结果字符串,可以为空"); * *******************************************************************************************/ if (handle.CodeMajor == 1) { ProcessCodeMajorOne(state, handle, data); } else if (handle.CodeMajor == 2) { ProcessCodeMajorTwo(state, handle, data); } else if (handle.CodeMajor == 3) { ProcessCodeMajorThree(state, handle, data); } else { net_simplify_server.SendMessage(state, handle, data); } }
/// <summary> /// 接收到服务器的字节数据的回调方法 /// </summary> /// <param name="state">网络连接对象</param> /// <param name="customer">用户自定义的指令头,用来区分数据用途</param> /// <param name="data">数据</param> private void Net_socket_client_AcceptString(AsyncStateOne state, NetHandle customer, string data) { // 我们规定 // 1 是系统消息, // 2 是用户发送的消息 // 3 客户端在线信息 // 4 退出指令 // 当你的消息头种类很多以后,可以在一个统一的类中心进行规定 if (customer == 1) { ShowSystemMsg(data); } else if (customer == 2) { ShowMsg(data); } else if (customer == 3) { ShowOnlineClient(data); } else if (customer == 4) { // 退出系统 QuitSystem( ); } }
/// <summary> /// H开头的处理块 /// </summary> /// <param name="state">网络状态</param> /// <param name="customer">用户自定义的指令头</param> /// <param name="data">字符串数据</param> private void DataProcessingWithStartH(AsyncStateOne state, int customer, string data) { if (customer == CommonHeadCode.MultiNetHeadCode.留言版消息) { ChatAddMessage(state.LoginAlias, data); } }
private void Net_udp_server_AcceptString(AsyncStateOne state, int customer, string data) { //此处为测试 Invoke(new Action(() => { textBox1.AppendText($"{DateTime.Now.ToString("MM-dd HH:mm:ss ")}来自IP:{state._IpEnd_Point.Address.ToString()} 内容:{data}{Environment.NewLine}"); })); }
private void ComplexClient_AcceptByte(AsyncStateOne stateOne, HslCommunication.NetHandle handle, byte[] buffer) { // 接收到服务器发送过来的字节数据时触发 if (handle == 1) { // 该buffer是读取到的西门子数据 ShowReadContent(buffer); } }
/****************************************************************************************************************** * * 方法说明: 当接收到来自客户端的数据的时候触发的方法 * 特别注意: 如果你的数据处理中引发了异常,应用程序将会继续运行,该异常将会记录在网络日志中, * 所以有必要的话,对可能发生的异常需要提前处理。 * ******************************************************************************************************************/ private void Net_socket_server_AcceptString(AsyncStateOne object1, int customer, string data) { //如果此处充斥大量if语句,影响观感,则考虑进行指令头分类操作,客户端异步发送的字符串都会到此处处理 if (CommonHeadCode.MultiNetHeadCode.IsCustomerGroupSystem(customer)) { //H类系统指令 DataProcessingWithStartH(object1, customer, data); } }
private void ComplexServer_ClientOffline(AsyncStateOne object1, string object2) { // 客户端下线,发送消息给客户端 complexServer.SendAllClients(1, object1.IpAddress + " " + object1.LoginAlias + " : " + object2); // 发送在线信息 complexServer.SendAllClients(3, RemoveOnLine(object1.ClientUniqueID)); // 在主界面显示信息 ShowMsg(object1.IpAddress + " " + object1.LoginAlias + " : " + object2); ShowOnlineClient( ); }
private void Net_socket_client_AcceptByte(AsyncStateOne object1, int customer, byte[] object2) { //接收到服务器发来的字节数据 if (IsHandleCreated) { Invoke(new Action(() => { MessageBox.Show(customer.ToString()); })); } }
private void Net_socket_client_AcceptByte(AsyncStateOne object1, NetHandle customer, byte[] object2) { //接收到服务器发来的字节数据 if (IsWindowShow) { Dispatcher.Invoke(new Action(() => { MessageBox.Show(customer.ToString()); })); } }
/// <summary> /// 接收来自客户端的字节数据 /// </summary> /// <param name="state">网络状态</param> /// <param name="customer">字节数据,根据实际情况选择是否使用</param> /// <param name="data">来自客户端的字节数据</param> private void Net_simplify_server_ReceivedBytesEvent(AsyncStateOne state, NetHandle customer, byte[] data) { if (customer == 1000) { // 收到指令为1000的请求时,返回1000长度的字节数组 net_simplify_server.SendMessage(state, customer, new byte[1000]); this.richTextBox1.Text += data.ToString(); } else { net_simplify_server.SendMessage(state, customer, data); } }
private void NetComplex_ClientOnline(AsyncStateOne object1) { // 回发一条初始化数据的信息 netComplex.Send(object1, 2, GetHistory( )); // 有客户端上限时触发方法 NetAccount account = new NetAccount( ) { Guid = object1.ClientUniqueID, Ip = object1.IpAddress, Name = object1.LoginAlias, OnlineTime = DateTime.Now, }; AddOnLine(account); }
private void Net_socket_server_ClientOnline(AsyncStateOne object1) { //上线后回发一条数据初始化信息 JObject json = new JObject { { "Time", new JValue(DateTime.Now) }, { "FileCount", new JValue(net_simple_file_server.File_Count()) }, { "chats", new JValue(Chats_Managment.ToSaveString()) } }; //发送客户端的初始化数据 net_socket_server.Send(object1, CommonHeadCode.MultiNetHeadCode.初始化数据, json.ToString()); //触发上下线功能 Net_socket_clients_change(DateTime.Now.ToString("MM-dd HH:mm:ss ") + object1._IpEnd_Point.Address.ToString() + ":" + object1.LoginAlias + " 上线"); }
/****************************************************************************************************************** * * 方法说明: 当接收到来自客户端的数据的时候触发的方法 * 特别注意: 如果你的数据处理中引发了异常,应用程序将会奔溃,SendMessage异常系统将会自动处理 * ******************************************************************************************************************/ /// <summary> /// 接收到来自客户端的数据,此处需要放置维护验证,更新验证等等操作 /// </summary> /// <param name="state">客户端的地址</param> /// <param name="customer">用于自定义的指令头,可不用,转而使用data来区分</param> /// <param name="data">接收到的服务器的数据</param> private void Net_simplify_server_ReceiveStringEvent(AsyncStateOne state, int customer, string data) { //必须返回结果,调用SendMessage(object1,[实际数据]); if (CommonHeadCode.SimplifyHeadCode.IsCustomerGroupSystem(customer)) { DataProcessingWithStartA(state, customer, data); } else if (CommonHeadCode.SimplifyHeadCode.IsCustomerGroupLogging(customer)) { DataProcessingWithStartB(state, customer, data); } else { net_simplify_server.SendMessage(state, customer, data); } }
private void ProcessCodeMajorThree(AsyncStateOne state, NetHandle handle, string data) { if (handle.CodeIdentifier == 1) { // 下面可以再if..else //net_simplify_server.SendMessage(state, handle, "测试数据大类3,命令1,接收到的数据是:" + data); //this.richTextBox1.Text += "发送的数据" + data.ToString(); try { string sql = string.Empty; sql = "select UserID from UserLogin where UserName=\"" + data + "\""; //string sql = textBox1.Text; richTextBox1.Text += sql + "\r\n"; string result = string.Empty; //执行查询 MySqlDataReader reader = mc.ExeQuery(sql); while (reader.Read()) { result = reader.GetValue(0).ToString(); } if (result != string.Empty) { result = "0"; net_simplify_server.SendMessage(state, handle, result); richTextBox1.Text += state.ToString() + "\t" + handle.ToString() + "\t" + result + "\r\n"; } else { result = "1"; net_simplify_server.SendMessage(state, handle, result); richTextBox1.Text += state.ToString() + "\t" + handle.ToString() + "\t" + result + "\r\n"; } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK); } } else { net_simplify_server.SendMessage(state, handle, data); this.richTextBox1.Text += "发送的数据" + data.ToString(); } }
private void ComplexServer_ClientOnline(AsyncStateOne object1) { // 客户端上线,发送消息给客户端 complexServer.SendAllClients(1, object1.IpAddress + " " + object1.LoginAlias + " : 上线"); // 发送在线信息 NetAccount account = new NetAccount() { Guid = object1.ClientUniqueID, Ip = object1.IpAddress, Name = object1.LoginAlias, OnlineTime = DateTime.Now.ToString(), }; complexServer.SendAllClients(3, AddOnLine(account)); // 在主界面显示信息 ShowMsg(object1.IpAddress + " " + object1.LoginAlias + " : 上线"); ShowOnlineClient( ); }
private void ProcessCodeMajorTwo(AsyncStateOne state, NetHandle handle, string data) { if (handle.CodeIdentifier == 1) { string sql = string.Empty; //下面可以再if..else //net_simplify_server.SendMessage(state, handle, "测试数据大类2,命令1,接收到的数据是:" + data); //this.richTextBox1.Text += "发送的数据" + data.ToString(); sql = "INSERT INTO UserLogin (UserName,PassWord,Level) VALUES ('" + data + "',0)"; richTextBox1.Text += sql + "\r\n"; mc.ExeUpdate(sql); net_simplify_server.SendMessage(state, handle, "添加成功"); } else { net_simplify_server.SendMessage(state, handle, data); this.richTextBox1.Text += "发送的数据" + data.ToString(); } }
private void NetSimplify_ReceiveStringEvent(AsyncStateOne state, HslCommunication.NetHandle handle, string msg) { if (handle == 1) { // 远程启动设备 string back = siemensTcpNet.WriteIntoPLC("M102", (byte)1).IsSuccess ? "成功启动" : "失败启动"; netSimplify.SendMessage(state, handle, back); } else if (handle == 2) { // 远程停止设备 string back = siemensTcpNet.WriteIntoPLC("M102", (byte)0).IsSuccess ? "成功停止" : "失败停止"; netSimplify.SendMessage(state, handle, back); } else { netSimplify.SendMessage(state, handle, msg); } }
private void ComplexClient_AcceptByte(AsyncStateOne stateOne, HslCommunication.NetHandle handle, byte[] buffer) { // 接收到服务器发送过来的字节数据时触发 if (handle == 1) { // 该buffer是读取到的西门子数据 if (isClientIni) { ShowReadContent(buffer); } } else if (handle == 2) { // 初始化的数据 ShowHistory(buffer); isClientIni = true; } }
private void ComplexServer_AcceptString(AsyncStateOne object1, NetHandle object2, string object3) { // 我们规定 // 1 是系统消息, // 2 是用户发送的消息 // 3 客户端在线信息 // 4 强制客户端下线 // 当你的消息头种类很多以后,可以在一个统一的类中心进行规定 if (object2 == 2) { // 来自客户端的消息,就只有这么一种情况 NetMessage msg = new NetMessage() { FromName = object1.LoginAlias, Time = DateTime.Now, Type = "string", Content = object3, }; // 群发出去 complexServer.SendAllClients(2, JObject.FromObject(msg).ToString()); } }
/// <summary> /// B指令块,处理日志相关的消息 /// </summary> /// <param name="state">网络状态对象</param> /// <param name="customer">用户自定义的命令头</param> /// <param name="data">实际的数据</param> private void DataProcessingWithStartB(AsyncStateOne state, int customer, string data) { if (customer == CommonHeadCode.SimplifyHeadCode.网络日志查看) { net_simplify_server.SendMessage(state, customer, net_socket_server.LogHelper.GetLogText()); RuntimeLogHelper.SaveInformation("网络日志查看"); } else if (customer == CommonHeadCode.SimplifyHeadCode.网络日志清空) { net_socket_server.LogHelper.ClearLogText(); net_simplify_server.SendMessage(state, customer, "成功"); RuntimeLogHelper.SaveWarnning("网络日志清空"); } else if (customer == CommonHeadCode.SimplifyHeadCode.步日志查看) { net_simplify_server.SendMessage(state, customer, net_simplify_server.LogHelper.GetLogText()); RuntimeLogHelper.SaveInformation("同步日志查看"); } else if (customer == CommonHeadCode.SimplifyHeadCode.步日志清空) { net_simplify_server.LogHelper.ClearLogText(); net_simplify_server.SendMessage(state, customer, "成功"); RuntimeLogHelper.SaveWarnning("同步日志清空"); } else if (customer == CommonHeadCode.SimplifyHeadCode.更新日志查看) { net_simplify_server.SendMessage(state, customer, net_soft_update_Server.LogHelper.GetLogText()); RuntimeLogHelper.SaveInformation("更新日志查看"); } else if (customer == CommonHeadCode.SimplifyHeadCode.更新日志清空) { net_soft_update_Server.LogHelper.ClearLogText(); net_simplify_server.SendMessage(state, customer, "成功"); RuntimeLogHelper.SaveWarnning("更新日志清空"); } else if (customer == CommonHeadCode.SimplifyHeadCode.运行日志查看) { net_simplify_server.SendMessage(state, customer, RuntimeLogHelper.GetLogText()); RuntimeLogHelper.SaveInformation("运行日志查看"); } else if (customer == CommonHeadCode.SimplifyHeadCode.运行日志清空) { RuntimeLogHelper.ClearLogText(); net_simplify_server.SendMessage(state, customer, "成功"); RuntimeLogHelper.SaveInformation("运行日志清空"); } else if (customer == CommonHeadCode.SimplifyHeadCode.文件日志查看) { net_simplify_server.SendMessage(state, customer, net_simple_file_server.LogHelper.GetLogText()); RuntimeLogHelper.SaveInformation("共享文件日志查看"); } else if (customer == CommonHeadCode.SimplifyHeadCode.文件日志清空) { net_simple_file_server.LogHelper.ClearLogText(); net_simplify_server.SendMessage(state, customer, "成功"); RuntimeLogHelper.SaveInformation("共享文件日志清空"); } else if (customer == CommonHeadCode.SimplifyHeadCode.反馈日志查看) { net_simplify_server.SendMessage(state, customer, AdviceLogHelper.GetLogText()); RuntimeLogHelper.SaveInformation("建议反馈日志查看"); } else if (customer == CommonHeadCode.SimplifyHeadCode.反馈日志清空) { AdviceLogHelper.ClearLogText(); net_simplify_server.SendMessage(state, customer, "成功"); RuntimeLogHelper.SaveWarnning("建议反馈日志清空"); } else if (customer == CommonHeadCode.SimplifyHeadCode.UDP日志查看) { net_simplify_server.SendMessage(state, 0, net_udp_server.LogHelper.GetLogText()); RuntimeLogHelper.SaveInformation("UDP日志查看"); } else if (customer == CommonHeadCode.SimplifyHeadCode.UDP日志清空) { net_udp_server.LogHelper.ClearLogText(); net_simplify_server.SendMessage(state, customer, "成功"); RuntimeLogHelper.SaveWarnning("UDP日志清空"); } else { net_simplify_server.SendMessage(state, customer, data); } }
private void Net_socket_server_AcceptByte(AsyncStateOne state, int customer, byte[] data) { //如果此处充斥大量if语句,影响观感,则考虑进行指令头分类操作,客户端异步发送的字节数组都会到此处处理 }
/// <summary> /// 接收到服务器的字节数据的回调方法 /// </summary> /// <param name="state">网络连接对象</param> /// <param name="customer">用户自定义的指令头,用来区分数据用途</param> /// <param name="data">数据</param> private void Net_socket_client_AcceptString(AsyncStateOne state, NetHandle customer, string data) { if (customer == CommonHeadCode.MultiNetHeadCode.弹窗新消息) { if (IsWindowShow) { Dispatcher.Invoke(new Action(() => { FormPopup fpp = new FormPopup(data, System.Drawing.Color.DodgerBlue, 10000); fpp.Show(); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.总在线信息) { //if (IsWindowShow) Dispatcher.Invoke(new Action(() => //{ // // ListBox_Onlines.ItemsSource = data.Split('#'); // ClientsOnline.Children.Clear(); // NetAccount[] accounts = JArray.Parse(data).ToObject<NetAccount[]>(); // foreach(var m in accounts) // { // Views.Controls.UserClientRenderItem userClient = new Views.Controls.UserClientRenderItem(); // userClient.SetClientRender(m); // ClientsOnline.Children.Add(userClient); // } //})); } else if (customer == CommonHeadCode.MultiNetHeadCode.关闭客户端) { if (IsWindowShow) { Dispatcher.Invoke(new Action(() => { Close(); })); } } else if (customer == CommonHeadCode.SimplifyHeadCode.更新公告) { //此处应用到了同步类的指令头 if (IsWindowShow) { Dispatcher.Invoke(new Action(() => { UserClient.Announcement = data; TextBlock_Announcement.Text = data; FormPopup fpp = new FormPopup(data, System.Drawing.Color.DodgerBlue, 10000); fpp.Show(); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.初始化数据) { //收到服务器的数据 JObject json = JObject.Parse(data); UserClient.DateTimeServer = json["Time"].ToObject <DateTime>(); List <string> chats = JArray.Parse(json["chats"].ToString()).ToObject <List <string> >(); StringBuilder sb = new StringBuilder(); chats.ForEach(m => { sb.Append(m + Environment.NewLine); }); if (IsWindowShow) { Dispatcher.Invoke(new Action(() => { TextBlock_ServerTime.Text = UserClient.DateTimeServer.ToString("yyyy-MM-dd HH:mm:ss"); TextBlock_FileCount.Text = json["FileCount"].ToObject <int>().ToString(); UIControls_Chat.AddChatsHistory(sb.ToString()); NetAccount[] accounts = JArray.Parse(json["ClientsOnline"].ToString()).ToObject <NetAccount[]>(); foreach (var m in accounts) { Views.Controls.UserClientRenderItem userClient = new Views.Controls.UserClientRenderItem(); userClient.SetClientRender(m); ClientsOnline.Children.Add(userClient); } })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.文件总数量) { if (IsWindowShow) { Dispatcher.Invoke(new Action(() => { TextBlock_FileCount.Text = data; })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.留言版消息) { if (IsWindowShow) { Dispatcher.Invoke(new Action(() => { UIControls_Chat?.DealwithReceive(data); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.新用户上线) { if (IsWindowShow) { Dispatcher.Invoke(new Action(() => { Views.Controls.UserClientRenderItem userClient = new Views.Controls.UserClientRenderItem(); userClient.SetClientRender(JObject.Parse(data).ToObject <NetAccount>()); ClientsOnline.Children.Add(userClient); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.用户下线) { if (IsWindowShow) { Dispatcher.Invoke(new Action(() => { Views.Controls.UserClientRenderItem item = null; foreach (Views.Controls.UserClientRenderItem m in ClientsOnline.Children) { if (m?.UniqueId == data) { item = m; } } if (item != null) { ClientsOnline.Children.Remove(item); } })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.新头像更新) { if (IsWindowShow) { Dispatcher.Invoke(new Action(() => { foreach (Views.Controls.UserClientRenderItem m in ClientsOnline.Children) { m.UpdatePortrait(data); } })); } } }
private void Net_socket_server_ClientOffline(AsyncStateOne object1, string object2) { Net_socket_clients_change(DateTime.Now.ToString("MM-dd HH:mm:ss ") + object1._IpEnd_Point.Address.ToString() + ":" + object1.LoginAlias + " " + object2); }
/// <summary> /// 接收到服务器的字节数据的回调方法 /// </summary> /// <param name="state">网络连接对象</param> /// <param name="customer">用户自定义的指令头,用来区分数据用途</param> /// <param name="data">数据</param> private void Net_socket_client_AcceptString(AsyncStateOne state, int customer, string data) { if (customer == CommonHeadCode.MultiNetHeadCode.弹窗新消息) { if (IsHandleCreated) { Invoke(new Action(() => { FormPopup fpp = new FormPopup(data, Color.DodgerBlue, 10000); fpp.Show(); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.总在线信息) { if (IsHandleCreated) { Invoke(new Action(() => { listBox1.DataSource = data.Split('#'); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.关闭客户端) { if (IsHandleCreated) { Invoke(new Action(() => { Close(); })); } } else if (customer == CommonHeadCode.SimplifyHeadCode.更新公告) { //此处应用到了同步类的指令头 if (IsHandleCreated) { Invoke(new Action(() => { UserClient.Announcement = data; label_Announcement.Text = data; FormPopup fpp = new FormPopup(data, Color.DodgerBlue, 10000); fpp.Show(); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.初始化数据) { //收到服务器的数据 JObject json = JObject.Parse(data); UserClient.DateTimeServer = json["Time"].ToObject <DateTime>(); List <string> chats = JArray.Parse(json["chats"].ToString()).ToObject <List <string> >(); StringBuilder sb = new StringBuilder(); chats.ForEach(m => { sb.Append(m + Environment.NewLine); }); if (IsHandleCreated) { Invoke(new Action(() => { toolStripStatusLabel_time.Text = UserClient.DateTimeServer.ToString("yyyy-MM-dd HH:mm"); label_file_count.Text = json["FileCount"].ToObject <int>().ToString(); UIControls_Chat.AddChatsHistory(sb.ToString()); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.文件总数量) { if (IsHandleCreated) { Invoke(new Action(() => { label_file_count.Text = data; })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.留言版消息) { if (IsHandleCreated) { Invoke(new Action(() => { UIControls_Chat?.DealwithReceive(data); })); } } }
private void ComplexClient_AcceptString(AsyncStateOne stateOne, HslCommunication.NetHandle handle, string data) { // 接收到服务器发送过来的字符串数据时触发 }
private void NetComplex_AcceptString(AsyncStateOne stateone, HslCommunication.NetHandle handle, string data) { // 接收到客户端发来的数据时触发 }
private void Net_udp_server_AcceptByte(AsyncStateOne state, int customer, byte[] data) { //具体用法参考上面字符串方法 }
private void NetComplex_ClientOffline(AsyncStateOne object1, string object2) { // 客户端下线的时候触发方法 RemoveOnLine(object1.ClientUniqueID); }
/// <summary> /// 接收到服务器的字节数据的回调方法 /// </summary> /// <param name="state">网络连接对象</param> /// <param name="customer">用户自定义的指令头,用来区分数据用途</param> /// <param name="data">数据</param> private void Net_socket_client_AcceptString(AsyncStateOne state, NetHandle customer, string data) { if (customer == CommonHeadCode.MultiNetHeadCode.弹窗新消息) { if (IsHandleCreated) { Invoke(new Action(() => { FormPopup fpp = new FormPopup(data, Color.DodgerBlue, 10000); fpp.Show(); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.总在线信息) { //if (IsHandleCreated) Invoke(new Action(() => //{ // // listBox1.DataSource = data.Split('#'); // NetAccount[] accounts = JArray.Parse(data).ToObject<NetAccount[]>(); // netClientOnline1.SetOnlineRender(accounts); //})); } else if (customer == CommonHeadCode.MultiNetHeadCode.关闭客户端) { if (IsHandleCreated) { Invoke(new Action(() => { Close(); })); } } else if (customer == CommonHeadCode.SimplifyHeadCode.更新公告) { //此处应用到了同步类的指令头 if (IsHandleCreated) { Invoke(new Action(() => { UserClient.Announcement = data; label_Announcement.Text = data; FormPopup fpp = new FormPopup(data, Color.DodgerBlue, 10000); fpp.Show(); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.初始化数据) { //收到服务器的数据 JObject json = JObject.Parse(data); UserClient.DateTimeServer = json["Time"].ToObject <DateTime>(); List <string> chats = JArray.Parse(json["chats"].ToString()).ToObject <List <string> >(); StringBuilder sb = new StringBuilder(); chats.ForEach(m => { sb.Append(m + Environment.NewLine); }); if (IsHandleCreated) { Invoke(new Action(() => { toolStripStatusLabel_time.Text = UserClient.DateTimeServer.ToString("yyyy-MM-dd HH:mm:ss"); label_file_count.Text = json["FileCount"].ToObject <int>().ToString(); UIControls_Chat.AddChatsHistory(sb.ToString()); UserClient.LogNet?.WriteDebug("Online Clients : " + json["ClientsOnline"].ToString()); NetAccount[] accounts = JArray.Parse(json["ClientsOnline"].ToString()).ToObject <NetAccount[]>(); netClientOnline1.SetOnlineRender(accounts); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.文件总数量) { if (IsHandleCreated) { Invoke(new Action(() => { label_file_count.Text = data; })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.留言版消息) { if (IsHandleCreated) { Invoke(new Action(() => { UIControls_Chat?.DealwithReceive(data); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.新用户上线) { if (IsHandleCreated) { Invoke(new Action(() => { UserClient.LogNet?.WriteDebug("Online Event : " + data); netClientOnline1.ClientOnline(JObject.Parse(data).ToObject <NetAccount>()); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.用户下线) { if (IsHandleCreated) { Invoke(new Action(() => { netClientOnline1.ClinetOffline(data); })); } } else if (customer == CommonHeadCode.MultiNetHeadCode.新头像更新) { UserClient.PortraitManager.UpdateSmallPortraitByName(data); if (IsHandleCreated) { Invoke(new Action(() => { if (data == UserClient.UserAccount.UserName) { pictureBox1.Image = UserClient.PortraitManager.GetSmallPortraitByUserName(data); } netClientOnline1.ClientUpdatePortrait(data); })); } } }
/**************************************************************************************************** * * * 数据处理中心,同步信息中的所有的细节处理均要到此处来处理 * * ****************************************************************************************************/ /// <summary> /// A指令块,处理系统基础运行的消息 /// </summary> /// <param name="state">网络状态对象</param> /// <param name="customer">用户自定义的指令头</param> /// <param name="data">实际的数据</param> private void DataProcessingWithStartA(AsyncStateOne state, int customer, string data) { if (customer == CommonHeadCode.SimplifyHeadCode.维护检查) { net_simplify_server.SendMessage(state, customer, "1"); //UserServer.ServerSettings.Can_Account_Login ? "1" : "0" + //UserServer.ServerSettings.Account_Forbidden_Reason); } else if (customer == CommonHeadCode.SimplifyHeadCode.更新检查) { net_simplify_server.SendMessage(state, customer, UserServer.ServerSettings.SystemVersion.ToString()); } else if (customer == CommonHeadCode.SimplifyHeadCode.参数下载) { JObject json = new JObject { { nameof(UserServer.ServerSettings.Announcement), new JValue(UserServer.ServerSettings.Announcement) } }; net_simplify_server.SendMessage(state, customer, json.ToString()); } else if (customer == CommonHeadCode.SimplifyHeadCode.账户检查) { //此处使用的是组件自带的验证的方式,如果使用SQL数据库,另行验证 JObject json = JObject.Parse(data); //提取账户,密码 string name = SoftBasic.GetValueFromJsonObject(json, UserAccount.UserNameText, ""); string password = SoftBasic.GetValueFromJsonObject(json, UserAccount.PasswordText, ""); net_simplify_server.SendMessage(state, customer, UserServer.ServerAccounts.CheckAccountJson( name, password, state.GetRemoteEndPoint().Address.ToString())); } else if (customer == CommonHeadCode.SimplifyHeadCode.更新公告) { UserServer.ServerSettings.Announcement = data; //通知所有客户端更新公告 net_socket_server.SendAllClients(customer, data); net_simplify_server.SendMessage(state, customer, "成功"); } else if (customer == CommonHeadCode.SimplifyHeadCode.获取账户) { //返回服务器的账户信息 net_simplify_server.SendMessage(state, customer, UserServer.ServerAccounts.GetAllAccountsJson()); } else if (customer == CommonHeadCode.SimplifyHeadCode.更细账户) { //更新服务器的账户信息 UserServer.ServerAccounts.LoadAllAccountsJson(data); net_simplify_server.SendMessage(state, customer, "成功"); } else if (customer == CommonHeadCode.SimplifyHeadCode.密码修改) { //更新服务器的账户密码,此处使用的是组件自带的验证的方式,如果使用SQL数据库,另行验证 JObject json = JObject.Parse(data); //提取账户,密码 string name = SoftBasic.GetValueFromJsonObject(json, UserAccount.UserNameText, ""); string password = SoftBasic.GetValueFromJsonObject(json, UserAccount.PasswordText, ""); UserServer.ServerAccounts.UpdatePassword(name, password); net_simplify_server.SendMessage(state, customer, "成功"); } else if (customer == CommonHeadCode.SimplifyHeadCode.更新版本) { try { UserServer.ServerSettings.SystemVersion = new SystemVersion(data); UserServer.ServerSettings.SaveToFile(); toolStripStatusLabel_version.Text = UserServer.ServerSettings.SystemVersion.ToString(); //记录数据 RuntimeLogHelper.SaveInformation($"更改了版本号:{data}"); net_simplify_server.SendMessage(state, customer, "1"); } catch { net_simplify_server.SendMessage(state, customer, "0"); } } else if (customer == CommonHeadCode.SimplifyHeadCode.注册账号) { bool result = UserServer.ServerAccounts.AddNewAccount(data); net_simplify_server.SendMessage(state, customer, result ? "1" : "0"); } else if (customer == CommonHeadCode.SimplifyHeadCode.请求文件) { net_simplify_server.SendMessage(state, customer, net_simple_file_server.ToJsonString()); } else if (customer == CommonHeadCode.SimplifyHeadCode.意见反馈) { AdviceLogHelper.SaveInformation(data); net_simplify_server.SendMessage(state, customer, "成功"); } else if (customer == CommonHeadCode.SimplifyHeadCode.群发消息) { net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.弹窗新消息, data); net_simplify_server.SendMessage(state, customer, "成功"); } else { net_simplify_server.SendMessage(state, customer, data); } }