Example #1
0
        /***********************************************************************************************
         *
         *    方法说明:    当接收到来自客户端的数据的时候触发的方法
         *    特别注意:    如果你的数据处理中引发了异常,应用程序将会奔溃,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);
            }
        }
Example #2
0
 /// <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( );
     }
 }
Example #3
0
 /// <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);
     }
 }
Example #4
0
 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}");
     }));
 }
Example #5
0
 private void ComplexClient_AcceptByte(AsyncStateOne stateOne, HslCommunication.NetHandle handle, byte[] buffer)
 {
     // 接收到服务器发送过来的字节数据时触发
     if (handle == 1)
     {
         // 该buffer是读取到的西门子数据
         ShowReadContent(buffer);
     }
 }
Example #6
0
        /******************************************************************************************************************
        *
        *    方法说明:    当接收到来自客户端的数据的时候触发的方法
        *    特别注意:    如果你的数据处理中引发了异常,应用程序将会继续运行,该异常将会记录在网络日志中,
        *                   所以有必要的话,对可能发生的异常需要提前处理。
        *
        ******************************************************************************************************************/


        private void Net_socket_server_AcceptString(AsyncStateOne object1, int customer, string data)
        {
            //如果此处充斥大量if语句,影响观感,则考虑进行指令头分类操作,客户端异步发送的字符串都会到此处处理
            if (CommonHeadCode.MultiNetHeadCode.IsCustomerGroupSystem(customer))
            {
                //H类系统指令
                DataProcessingWithStartH(object1, customer, data);
            }
        }
Example #7
0
        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( );
        }
Example #8
0
 private void Net_socket_client_AcceptByte(AsyncStateOne object1, int customer, byte[] object2)
 {
     //接收到服务器发来的字节数据
     if (IsHandleCreated)
     {
         Invoke(new Action(() =>
         {
             MessageBox.Show(customer.ToString());
         }));
     }
 }
Example #9
0
 private void Net_socket_client_AcceptByte(AsyncStateOne object1, NetHandle customer, byte[] object2)
 {
     //接收到服务器发来的字节数据
     if (IsWindowShow)
     {
         Dispatcher.Invoke(new Action(() =>
         {
             MessageBox.Show(customer.ToString());
         }));
     }
 }
Example #10
0
 /// <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);
     }
 }
Example #11
0
        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);
        }
Example #12
0
        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 + " 上线");
        }
Example #13
0
        /******************************************************************************************************************
        *
        *    方法说明:    当接收到来自客户端的数据的时候触发的方法
        *    特别注意:    如果你的数据处理中引发了异常,应用程序将会奔溃,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);
            }
        }
Example #14
0
 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();
     }
 }
Example #15
0
        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( );
        }
Example #16
0
 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();
     }
 }
Example #17
0
 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);
     }
 }
Example #18
0
        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;
            }
        }
Example #19
0
        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());
            }
        }
Example #20
0
 /// <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);
     }
 }
Example #21
0
 private void Net_socket_server_AcceptByte(AsyncStateOne state, int customer, byte[] data)
 {
     //如果此处充斥大量if语句,影响观感,则考虑进行指令头分类操作,客户端异步发送的字节数组都会到此处处理
 }
Example #22
0
        /// <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);
                        }
                    }));
                }
            }
        }
Example #23
0
 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);
 }
Example #24
0
 /// <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);
             }));
         }
     }
 }
Example #25
0
 private void ComplexClient_AcceptString(AsyncStateOne stateOne, HslCommunication.NetHandle handle, string data)
 {
     // 接收到服务器发送过来的字符串数据时触发
 }
Example #26
0
 private void NetComplex_AcceptString(AsyncStateOne stateone, HslCommunication.NetHandle handle, string data)
 {
     // 接收到客户端发来的数据时触发
 }
Example #27
0
 private void Net_udp_server_AcceptByte(AsyncStateOne state, int customer, byte[] data)
 {
     //具体用法参考上面字符串方法
 }
Example #28
0
 private void NetComplex_ClientOffline(AsyncStateOne object1, string object2)
 {
     // 客户端下线的时候触发方法
     RemoveOnLine(object1.ClientUniqueID);
 }
Example #29
0
        /// <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);
                    }));
                }
            }
        }
Example #30
0
 /****************************************************************************************************
 *
 *
 *    数据处理中心,同步信息中的所有的细节处理均要到此处来处理
 *
 *
 ****************************************************************************************************/
 /// <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);
     }
 }