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); }); }
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; } }