Пример #1
0
        private void Rec(SocketHelper.Sockets sks)
        {
            if (sks.ex != null)
            {
                //在这里判断ErrorCode  可以自由扩展
                switch (sks.ErrorCode)
                {
                case SocketHelper.Sockets.ErrorCodes.objectNull:
                    break;

                case SocketHelper.Sockets.ErrorCodes.ConnectError:
                    break;

                case SocketHelper.Sockets.ErrorCodes.ConnectSuccess:
                    DgLog("连接成功...");
                    IsConnect  = true;
                    info.Order = SocketOrder.Login;
                    client.SendData(Serializer(info));
                    break;

                case SocketHelper.Sockets.ErrorCodes.TrySendData:
                    break;

                default:
                    break;
                }
                if (sks.ErrorCode != SocketHelper.Sockets.ErrorCodes.ConnectSuccess)
                {
                    DgLog(string.Format("{0}", sks.ex));
                    IsConnect = false;
                }
            }
            else
            {
                byte[] buffer = new byte[sks.Offset];
                Array.Copy(sks.RecBuffer, buffer, sks.Offset);
                string str = Encoding.UTF8.GetString(buffer);
                if (str == "ServerOff")
                {
                    DgLog("服务端主动关闭,即将尝试重新连接...");
                    IsConnect = false;
                }
                else
                {
                    DgMessage(string.Format("服务端{0}发来消息:{1}", sks.Ip, str));
                    //txtThis.Text += "\r\n";
                    //txtThis.Text += string.Format("服务端{0}发来消息:{1}", sks.Ip, str);
                }
            }
        }
Пример #2
0
        private static void Rec(SocketHelper.Sockets sks)
        {
            if (sks.ex != null)
            {
                //string.Format("客户端出现异常:{0}.!", sks.ex.Message);
            }
            else
            {
                if (sks.NewClientFlag)
                {
                    //string.Format("新客户端:{0}连接成功.!", sks.Ip)
                }
                else
                {
                    byte[] buffer = new byte[sks.Offset];
                    Array.Copy(sks.RecBuffer, buffer, sks.Offset);
                    string str = string.Empty;
                    if (sks.Offset == 0)
                    {
                        str = "客户端下线";
                    }
                    else
                    {
                        str = Encoding.UTF8.GetString(buffer);
                        if (string.IsNullOrEmpty(str))
                        {
                            server.SendToClient(sks.Ip, ExcuteMessage.Error("传入参数为空!"));
                            return;
                        }

                        PostSourceEntity entity = str.ToJsonObject <PostSourceEntity>();
                        str = JZ.Server.PublicServer.CallFunction(entity);
                        server.SendToClient(sks.Ip, str);
                    }
                }
            }
        }
Пример #3
0
        private void Rec(SocketHelper.Sockets sks)
        {
            IPEndPoint _ip = new IPEndPoint(IPAddress.Any, 60000);

            if (sks.ex != null)
            {
                //在此处理异常信息
                WriteLog(string.Format("客户端出现异常:{0}.!", sks.ex.Message));
                //ServerInfo _info = new ServerInfo() { Ip = sks.Ip };
                ClientRemove(sks.Ip);
                //labClientCount.Text = (cmbClient.Items.Count).ToString();
            }
            else
            {
                if (sks.NewClientFlag)
                {
                    WriteLog(string.Format("新客户端:{0}连接成功.!", sks.Ip));
                    //(sks.Ip.ToString());
                    //labClientCount.Text = (cmbClient.Items.Count).ToString();
                }
                else
                {
                    byte[] buffer = new byte[sks.Offset];
                    Array.Copy(sks.RecBuffer, buffer, sks.Offset);
                    string str = string.Empty;
                    if (sks.Offset == 0)
                    {
                        str = sks.Ip.ToString() + " 客户端下线";
                        WriteLog(str);
                        ClientRemove(sks.Ip);
                        //labClientCount.Text = (cmbClient.Items.Count).ToString();
                    }
                    else
                    {
                        try
                        {
                            str = Encoding.UTF8.GetString(buffer);
                            SocketInfo _info = new SocketInfo();
                            _info = Derializer(str);
                            if (_info.Order == SocketOrder.Login)
                            {
                                if (!CheckClientIsHaving(_info.ClientName, out _ip))
                                {
                                    ClientAdd(new ServerInfo()
                                    {
                                        AimName    = _info.AimName,
                                        ClientName = _info.ClientName,
                                        Ip         = sks.Ip
                                    });
                                }
                                else
                                {
                                    SendToClient(sks.Ip, "服务器存在相同名称客户端,请重命名.");
                                }
                            }
                            else
                            {
                                if (CheckClientIsHaving(_info.AimName, out _ip))
                                {
                                    WriteLog(string.Format("{0}向{1}发送:{2}", _info.ClientName, _info.AimName, _info.DataInfo));
                                    SendToClient(_ip, _info.DataInfo);
                                }
                                else
                                {
                                    WriteLog("没找到目标服务器,转发失败,已反馈到源服务器");
                                    SendToClient(sks.Ip, "发送失败,目标服务器可能已经离线..");
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            throw;
                        }
                    }
                }
            }
        }
Пример #4
0
        /// <summary>
        /// 处理推送过来的消息
        /// </summary>
        /// <param name="rec"></param>
        private void Rec(SocketHelper.Sockets sks)
        {
            if (sks.ex != null)
            {
                //在这里判断ErrorCode  可以自由扩展
                switch (sks.ErrorCode)
                {
                case SocketHelper.Sockets.ErrorCodes.objectNull:
                    break;

                case SocketHelper.Sockets.ErrorCodes.ConnectError:
                    break;

                case SocketHelper.Sockets.ErrorCodes.ConnectSuccess:
                    break;

                case SocketHelper.Sockets.ErrorCodes.TrySendData:
                    break;

                default:
                    break;
                }
                MessageBox.Show(sks.ex.ToString());
            }
            else
            {
                byte[] buffer = new byte[sks.Offset];
                Array.Copy(sks.RecBuffer, buffer, sks.Offset);
                string str = Encoding.UTF8.GetString(buffer);
                if (str == "ServerOff")
                {
                    MessageBox.Show("服务端主动关闭");
                }
                else
                {
                    ExcuteResultMsg msg = str.ToJsonObject <ExcuteResultMsg>();
                    if (blnUpdate)
                    {
                        blnUpdate = false;
                        var lst = msg.Result.ToJsonObject <List <JZ.Models.Test> >();
                        if (lst != null && lst.Count > 0)
                        {
                            lst[0].Value = Guid.NewGuid().ToString();
                            client.SendData(CreateEditModel(lst[0]));
                        }
                        else
                        {
                            MessageBox.Show("没有查询到数据");
                            return;
                        }
                    }
                    else
                    {
                        if (msg.Code == ResultCode.Success)
                        {
                            MessageBox.Show("成功\n\r" + str);
                        }
                        else
                        {
                            MessageBox.Show("失败:" + str);
                        }
                    }
                }
            }
        }