public void ConstructorMustSerializeExceptionWhenExceptionIsBeingSerialized() { NotFoundException exception = new NotFoundException("Test"); using MemoryStream stream = new MemoryStream(); Assert.Equal("Test", FormatterHelper.Deserialize <NotFoundException>(new BinaryFormatter(), FormatterHelper.Serialize(new BinaryFormatter(), stream, exception)).Message); }
public global::MagicSpritz.IAction Deserialize(byte[] bytes, int offset, global::MessagePack.IFormatterResolver formatterResolver, out int readSize) { if (global::MessagePack.MessagePackBinary.IsNil(bytes, offset)) { readSize = 1; return(null); } return(FormatterHelper.Deserialize(bytes, offset, formatterResolver, out readSize)); }
private void ReceiveAudio(byte[] bytes) { //反序列化 M_AudioClip mac = (M_AudioClip)FormatterHelper.Deserialize(bytes); //生成新的声音片段 AudioClip ac = AudioClip.Create("s", mac.length, 1, mac.frequency, false); //float数组转audioclip ac.SetData(mac.audioData, 0); //播放 audioSource.clip = ac; audioSource.Play(); }
private void Work(object obj) { try { var paras = obj as object[]; IPEndPoint remoteIP = paras[0] as IPEndPoint; byte[] msgBuffer = paras[1] as byte[]; byte[] buffer = null; object msgObj = FormatterHelper.Deserialize(msgBuffer); if (msgObj is LoginMessage) { LoginMessage lginMsg = (LoginMessage)msgObj; IPEndPoint userEndPoint = new IPEndPoint(remoteIP.Address, remoteIP.Port); User user = new User(lginMsg.UserName, userEndPoint); OnFriendLoginMessage onFriendLoginMessage = new OnFriendLoginMessage(user); buffer = FormatterHelper.Serialize(onFriendLoginMessage); foreach (User item in userList) { server.Send(buffer, buffer.Length, item.NetPoint); } if (!userList.Contain(user)) { userList.Add(user); } // 发送应答消息 OnLoginMessage onloginmsg = new OnLoginMessage(userList); buffer = FormatterHelper.Serialize(onloginmsg); server.Send(buffer, buffer.Length, remoteIP); } else if (msgObj is LogoutMessage) { P2P.WellKnown.C2S.LogoutMessage lgoutMsg = (P2P.WellKnown.C2S.LogoutMessage)msgObj; User lgoutUser = userList.Find(lgoutMsg.UserName); if (lgoutUser != null) { userList.Remove(lgoutUser); } } else if (msgObj is P2P.WellKnown.C2S.DownLoadMessage) { //DownLoadMessage downLoadMessage = msgObj as DownLoadMessage; //UdpTranferFile.UdpSendFile udpSendFile = new UdpTranferFile.UdpSendFile(remoteIP.Address.ToString(), downLoadMessage.Port, 2280); //udpSendFile.Start(); //UdpTranferFile.SendFileManager sendFileManager = new UdpTranferFile.SendFileManager(downLoadMessage.FileName); //if (udpSendFile.CanSend(sendFileManager)) //{ // udpSendFile.SendFile(sendFileManager, null); //} //else //{ // //MessageBox.Show("文件正在发送,不能发送重复的文件。"); //} } else if (msgObj is GetUsersMessage) { GetUsersResponseMessage srvResMsg = new GetUsersResponseMessage(userList); buffer = FormatterHelper.Serialize(srvResMsg); foreach (User user in userList) { server.Send(buffer, buffer.Length, user.NetPoint); } } else if (msgObj is MassMsg) { ResetInterval(); this.SendToEveryBody(); } else if (msgObj is TranslateMessage) { P2P.WellKnown.C2S.TranslateMessage transMsg = (P2P.WellKnown.C2S.TranslateMessage)msgObj; User toUser = userList.Find(transMsg.ToUserName); // 转发Purch Hole请求消息 if (toUser == null) { //Console.WriteLine("Remote host {0} cannot be found at index server", transMsg.ToUserName); } else { SomeOneCallYouMessage transMsg2 = new SomeOneCallYouMessage(remoteIP); buffer = FormatterHelper.Serialize(transMsg); server.Send(buffer, buffer.Length, toUser.NetPoint); } } } catch (Exception) { } }