这不就是你们约定的通讯协议么..直接解析就成了 为啥要UnicodeEncoding.UTF8.GetString(data)呢?正常来说 如果双方约定了协议(比如上面)那么对方可能就给你丢一个这个东西 比如10 ee 08 aa aa aa aa aa aa aa aa 其中10表示整个包的长度 ee表示命令(双方定义的) 08表示字符串字节长度 后面的8个字节就表示具体内容了.如果要读取后面的内容 就UnicodeEncoding.UTF8.GetString(data)(其中data是8个字节截取来的)一般来说协议就是这样的 我觉得你还是双方在一起讨论下比较好,..

解决方案 »

  1.   


    这不就是你们约定的通讯协议么..直接解析就成了 为啥要UnicodeEncoding.UTF8.GetString(data)呢?正常来说 如果双方约定了协议(比如上面)那么对方可能就给你丢一个这个东西 比如10 ee 08 aa aa aa aa aa aa aa aa 其中10表示整个包的长度 ee表示命令(双方定义的) 08表示字符串字节长度 后面的8个字节就表示具体内容了.如果要读取后面的内容 就UnicodeEncoding.UTF8.GetString(data)(其中data是8个字节截取来的)一般来说协议就是这样的 我觉得你还是双方在一起讨论下比较好,..
    谢谢,协议是我自己定的,这些都了解,就是不懂怎么读取10,ee和08这几个值,比如有的需要根据ee来判断执行哪些操作,我试了几个都没办法读取出来。
      

  2.   


                float a = System.BitConverter.ToSingle(data, 0);
                double b = System.BitConverter.ToDouble(data, 0);
                int c = System.BitConverter.ToInt16(data, 0);
                int d = System.BitConverter.ToInt32(data, 0);
                long e = System.BitConverter.ToInt64(data, 0);
                uint f = System.BitConverter.ToUInt16(data, 0);
                uint g = System.BitConverter.ToUInt32(data, 0);
    我用这些读取出来的值都是错的,不知道对应用哪个方法读取
      

  3.   

    data是byte[]通过下标访问指定数据
    如果是Stream,可以用Postion定位再读取
      

  4.   

    英国有一个开源的networkComms2.3.1 C#通信框架,很稳定,您可以试一下
      

  5.   

    像AS3读取的话都是readInt,readByte,readUTF8等就可以直接读取值了,但在C#中貌似要用很多方法,一时搞不懂具体用哪个,百度了下,貌似关键词不一样还是咋滴,就是度不到,比如:C#读取报文,C# 读取BYTE等都没办法搜出结果
      

  6.   

    用BinaryReader来读,想读多少都可以
    ReadBoolean(),ReadChar(),ReadDouble()....