Пример #1
0
        public void SendPacket(ushort packet_type, TransmitParameters.ToPackArgu toPackArgu = null)
        {
            TransmitParameters.CallArgus mCallArgus1 = new TransmitParameters.CallArgus();
            mCallArgus1.pack_argu            = new TransmitParameters.PackArgus();
            mCallArgus1.pack_argu.toPackArgu = new TransmitParameters.ToPackArgu();
            if (toPackArgu == null)
            {
                mCallArgus1.pack_argu.toPackArgu = new TransmitParameters.ToPackArgu();
            }
            else
            {
                mCallArgus1.pack_argu.toPackArgu = toPackArgu;
            }
            mCallArgus1.pack_argu.toPackArgu.type = packet_type;
            MemoryStream ms1 = new MemoryStream();

            ProtoBuf.Serializer.Serialize(ms1, mCallArgus1);

            byte[] msg  = new byte[1024];
            uint   size = (uint)msg.Length;

            MyLibInterface.PackPacket(ms1.ToArray(), (uint)ms1.Length, ref msg, ref size);

            MemoryStream ms2 = new MemoryStream();

            ms2.Write(msg, 0, (int)size);
            ms2.Position = 0;
            TransmitParameters.CallArgus mCallArgus = ProtoBuf.Serializer.Deserialize <TransmitParameters.CallArgus>(ms2);
            MyLibInterface.SendPacket(mCallBackFuctions._Socket, mCallArgus.pack_argu.pack_data.msg, (uint)mCallArgus.pack_argu.pack_data.msg.Length);

            System.Threading.ThreadPool.QueueUserWorkItem(delegate
            {
                UserMsg userMsg = new UserMsg();
                userMsg.isSend  = true;
                userMsg.cTime   = DateTime.Now.ToString("HH:mm:ss");
                userMsg.Code    = packet_type;
                userMsg.Msg     = mCallArgus.pack_argu.pack_data.msg;
                Application.Current.Dispatcher.Invoke(new AddAStudentEvent(this.AddAStudent), userMsg);
            });
        }
Пример #2
0
        public void PacketMessageHander(TransmitParameters.CallArgus mCallArgu)
        {
            if (!mCallArgu.isCallSucess)
            {
                return;
            }

            System.Threading.ThreadPool.QueueUserWorkItem(delegate
            {
                UserMsg userMsg = new UserMsg();
                userMsg.isSend  = false;
                userMsg.cTime   = DateTime.Now.ToString("HH:mm:ss");
                userMsg.Code    = mCallArgu.pack_argu.unpack_data.type;
                userMsg.Msg     = mCallArgu.pack_argu.unpack_data.data;
                Application.Current.Dispatcher.Invoke(new AddAStudentEvent(this.AddAStudent), userMsg);
            });

            switch (mCallArgu.pack_argu.unpack_data.type)
            {
            case 0x0825:
            {
                if (mCallArgu.pack_argu.unpack_data.isTurnIp)
                {
                    //需要中转IP
                    MyLibInterface.OnDisconnect(mCallBackFuctions._Socket);

                    GlobalVar.mLocalConfig.strServerIp = Config.LocalConfig.IntToIp(mCallArgu.pack_argu.unpack_data.serverip);

                    uint ip = (uint)Config.LocalConfig.IpToInt(GlobalVar.mLocalConfig.strServerIp);
                    MyLibInterface._InitServer(ip, (uint)(GlobalVar.mLocalConfig.iServerPort), 1);
                    char[] strIp = new char[20];
                    GlobalVar.mLocalConfig.strServerIp.CopyTo(0, strIp, 0, GlobalVar.mLocalConfig.strServerIp.Length);
                    MyLibInterface.OnConnectA(mCallBackFuctions.mNetLibCallback, strIp, GlobalVar.mLocalConfig.iServerPort, 1);
                }
                else
                {
                    SendPacket(0x0836);
                }
            } break;

            case 0x0836:
            {
                if (!mCallArgu.pack_argu.unpack_data.is0836Suc)
                {
                    if (mCallArgu.loginresult.notifyMsg == "NEED_LOGINVERIFYAGAIN")
                    {
                        SendPacket(0x0836);
                        break;
                    }
                    else
                    {
                        System.Windows.MessageBox.Show(mCallArgu.loginresult.notifyMsg);
                        return;
                    }
                }
                else
                {
                    SendPacket(0x0828);
                }
            } break;

            case 0x0828:
            {
                if (!mCallArgu.pack_argu.unpack_data.is0828Suc)
                {
                    System.Windows.MessageBox.Show(mCallArgu.loginresult.notifyMsg);
                    return;
                }
                else
                {
                    TransmitParameters.ToPackArgu toPackArgu = new TransmitParameters.ToPackArgu();
                    toPackArgu.type = 0x001D;
                    toPackArgu.msg  = new byte[] { 0x34 };
                    SendPacket(0x001D, toPackArgu);
                    toPackArgu.msg = new byte[] { 0x12 };
                    SendPacket(0x001D, toPackArgu);
                    toPackArgu.msg = new byte[] { 0x26 };
                    SendPacket(0x001D, toPackArgu);
                    toPackArgu.type = 0x01BB;
                    toPackArgu.msg  = new byte[] { 0x01,
                                                   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                                                   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
                    SendPacket(0x01BB, toPackArgu);
                    toPackArgu.msg = new byte[] { 0x03, 0x00, 0x01, 0x00, 0x00 };
                    SendPacket(0x01BB, toPackArgu);
                    //SendPacket(0x0422);
                    SendPacket(0x0134);
                    //发送00EC导致下线
                    SendPacket(0x00EC);
                    SendPacket(0x00D1);
                    toPackArgu.type = 0x001D;
                    toPackArgu.msg  = new byte[] { 0x20 };
                    SendPacket(0x001D, toPackArgu);
                    toPackArgu.msg = new byte[] { 0x21 };
                    SendPacket(0x001D, toPackArgu);
                    toPackArgu.msg = new byte[] { 0x22 };
                    SendPacket(0x001D, toPackArgu);
                    toPackArgu.msg = new byte[] { 0x31 };
                    SendPacket(0x001D, toPackArgu);
                    SendPacket(0x0001);
                }
            } break;

            case 0x00EC:
            {
                _User.LoginUser();
                base.OnPropertyChanged("IsLogin");
                System.Windows.MessageBox.Show("登陆成功");
                dispatcherTimer.Start();
            } break;

            case 0x0017:
            {
                TransmitParameters.ToPackArgu toPackArgu = new TransmitParameters.ToPackArgu();
                toPackArgu.type = 0x0017;
                toPackArgu.msg  = new byte[0x10];
                toPackArgu.seq  = mCallArgu.pack_argu.unpack_data.seq;
                Array.Copy(mCallArgu.pack_argu.unpack_data.data, toPackArgu.msg, 0x10);
                SendPacket(0x0017, toPackArgu);
            } break;

            default:
            {
                //消息
            } break;
            }
        }