/// <summary> /// 此翻译方法只用于服务器对客户端做出的响应的翻译 /// </summary> /// <param name="receiveBytes">响应原数据</param> /// <returns>响应翻译后的数据,可通过typeof获得其类型</returns> public static object[] Translate(byte[] receiveBytes) { object[] result = null; if ((NetCmd)receiveBytes[0] == NetCmd.Echo) { result = NetDataTypeDictionary.GetValue(receiveBytes, 2, receiveBytes.Length - 2); } else { throw new Exception("此翻译方法只用于服务器对客户端做出的响应的翻译!"); } return(result); }
/// <summary> /// 发送时翻译把高层命令翻译为字节串 /// </summary> /// <param name="netCmd">网络命令(网络请求)</param> /// <param name="datas">此网络命令需要的数据</param> /// <returns>翻译成为字节串</returns> public static byte[] Translate(NetCmd netCmd, params object[] datas) { byte[] result = null; switch (netCmd) { case NetCmd.Login: case NetCmd.SignIn: //result = ByteArrayConnetion(netCmd, (string)datas[0], "[End]", (string)datas[1], "[End]"); //result = ByteArrayConnetion(netCmd, // new String20((string)datas[0]).GetByteArray(), // new String20((string)datas[1]).GetByteArray()); result = ByteArrayConnetion(netCmd, NetDataTypeDictionary.GetByteArray(new ArrayList() { datas[0], datas[1], })); //result = ByteArrayConnetion(netCmd, // new String20((string)datas[0]).GetByteArray(), // new String20((string)datas[1]).GetByteArray()); break; default: if (datas == null) { result = ByteArrayConnetion(netCmd, new String20(Player.self.playerName).GetByteArray()); } else { result = ByteArrayConnetion(netCmd, new String20(Player.self.playerName).GetByteArray(), NetDataTypeDictionary.GetByteArray(new ArrayList(datas))); } break; } return(result); }