Esempio n. 1
0
 ///<summary>
 ///当bool=true且type为TEXT时,更新last_textmes
 /// </summary>
 public bool decodemes(byte[] jsonb, out mestype type)
 {
     bool ret = false;
     type = mestype.UNDEFINED;
     try
     {
         string jsonmes = Encoding.UTF8.GetString(jsonb);
         JObject jsonobject = JObject.Parse(jsonmes);
         int id = (int)jsonobject["id"];
         string type_s = (string)jsonobject["type"];
         string time_s = (string)jsonobject["time"];
         string md5 = (string)jsonobject["md5"];
         md5 = md5.ToLower();
         type = get_type(type_s);
         switch (type)
         {
             case mestype.RESPONSE:
             case mestype.EXIT:
                 {
                     List<byte[]> con_byte = new List<byte[]>();
                     con_byte.Add(BitConverter.GetBytes(id));
                     con_byte.Add(Encoding.UTF8.GetBytes(type_s));
                     con_byte.Add(Encoding.UTF8.GetBytes(time_s));
                     if (md5_verification(byte_connect(con_byte),md5))
                         ret = true;
                     else
                     {
                         type = mestype.UNDEFINED;
                         ret = false;
                     }
                     break;
                 }
             case mestype.TEXT:
                 {
                     List<byte[]> con_byte = new List<byte[]>();
                     string data_name = (string)jsonobject["data"]["name"];
                     string data_text_utf8 = (string)jsonobject["data"]["text"];
                     con_byte.Add(BitConverter.GetBytes(id));
                     con_byte.Add(Encoding.UTF8.GetBytes(type_s));
                     con_byte.Add(Encoding.UTF8.GetBytes(time_s));
                     con_byte.Add(Encoding.UTF8.GetBytes(data_name));
                     con_byte.Add(Encoding.UTF8.GetBytes(data_text_utf8));
                     if (md5_verification(byte_connect(con_byte), md5))
                     {
                         last_textmes.id = id;
                         last_textmes.time = DateTime.ParseExact(time_s, "yyyy.MM.dd HH:mm:ss", null);
                         last_textmes.name = data_name;
                         last_textmes.text = data_text_utf8;
                         ret = true;
                     }
                     else
                     {
                         type = mestype.UNDEFINED;
                         ret = false;
                     }
                     break;
                 }
             default:
                 {
                     type = mestype.UNDEFINED;
                     ret = false;
                     break;
                 }
         }
     }
     catch (Exception e)
     {
         ret = false;
     }
     return ret;
 }
Esempio n. 2
0
 ///<summary>
 ///当bool=true且type为TEXT时,从send_textmes中拿取信息生成jsonb,否则直接生成其他的type
 ///<para>生成其他的type的时候,会利用到send_textmes中的id与Time信息。</para>
 /// </summary>
 public bool encodemes(mestype type, out byte[] jsonb)
 {
     bool ret = false;
     jsonb = null;
     try
     {
         string s = string.Empty;
         s += "{";
         s += "\"id\":" + send_textmes.id.ToString() + ",";
         switch (type)
         {
             case mestype.EXIT:
                 {
                     s += "\"type\":\"exit\",";
                     s += "\"time\":\"" + send_textmes.time.ToString("yyyy.MM.dd HH:mm:ss") + "\",";
                     s += "\"else\":{},";
                     s += "\"data\":{},";
                     List<byte[]> con_byte = new List<byte[]>();
                     con_byte.Add(BitConverter.GetBytes(send_textmes.id));
                     con_byte.Add(Encoding.UTF8.GetBytes("exit"));
                     con_byte.Add(Encoding.UTF8.GetBytes(send_textmes.time.ToString("yyyy.MM.dd HH:mm:ss")));
                     s += "\"md5\":\"" + getmd5(byte_connect(con_byte)) + "\"";
                     s += "}";
                     jsonb = Encoding.UTF8.GetBytes(s);
                     ret = true;
                     break;
                 }
             case mestype.RESPONSE:
                 {
                     s += "\"type\":\"response\",";
                     s += "\"time\":\"" + send_textmes.time.ToString("yyyy.MM.dd HH:mm:ss") + "\",";
                     s += "\"else\":{},";
                     s += "\"data\":{},";
                     List<byte[]> con_byte = new List<byte[]>();
                     con_byte.Add(BitConverter.GetBytes(send_textmes.id));
                     con_byte.Add(Encoding.UTF8.GetBytes("response"));
                     con_byte.Add(Encoding.UTF8.GetBytes(send_textmes.time.ToString("yyyy.MM.dd HH:mm:ss")));
                     s += "\"md5\":\"" + getmd5(byte_connect(con_byte)) + "\"";
                     s += "}";
                     jsonb = Encoding.UTF8.GetBytes(s);
                     ret = true;
                     break;
                 }
             case mestype.TEXT:
                 {
                     s += "\"type\":\"text\",";
                     s += "\"time\":\"" + send_textmes.time.ToString("yyyy.MM.dd HH:mm:ss") + "\",";
                     s += "\"else\":{},";
                     s += "\"data\":{";
                     s += "\"name\":\"" + add_special_char(send_textmes.name) + "\",";
                     s += "\"text\":\"" + add_special_char(send_textmes.text) + "\"";
                     s += "},";
                     List<byte[]> con_byte = new List<byte[]>();
                     con_byte.Add(BitConverter.GetBytes(send_textmes.id));
                     con_byte.Add(Encoding.UTF8.GetBytes("text"));
                     con_byte.Add(Encoding.UTF8.GetBytes(send_textmes.time.ToString("yyyy.MM.dd HH:mm:ss")));
                     con_byte.Add(Encoding.UTF8.GetBytes(send_textmes.name));
                     con_byte.Add(Encoding.UTF8.GetBytes(send_textmes.text));
                     s += "\"md5\":\"" + getmd5(byte_connect(con_byte)) + "\"";
                     s += "}";
                     jsonb = Encoding.UTF8.GetBytes(s);
                     ret = true;
                     break;
                 }
             default:
                 {
                     ret = false;
                     jsonb = null;
                     break;
                 }
         }
     }
     catch (Exception e)
     {
         ret = false;
         jsonb = null;
     }
     return ret;
 }