Пример #1
0
 /// <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);
 }
Пример #2
0
    /// <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);
    }