SOCKET数据读取解析byte int等解决方法

SOCKET数据读取解析byte int等
菜鸟,写了个服务端接收客户端AS3传来的数据
数据格式是:包长+命令+字符串长度+字符串内容
用UnicodeEncoding.UTF8.GetString(data).Replace("\0", "");可以读取发过来的字符串
但前面总是会多了个无法识别的符号
估计应该就是前面的命令和长度等导致的,可不知道用什么来读取
包长用sort,命令用byte,字符长度也是sort

用哪个方法可以正确读取AS3传过来的sort和byte,int等数据?
或者一般用什么方式进行传输数据,怎么对byte进行解析?
------解决思路----------------------
引用
包长+命令+字符串长度+字符串内容


这不就是你们约定的通讯协议么..

直接解析就成了 为啥要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个字节截取来的)

一般来说协议就是这样的 我觉得你还是双方在一起讨论下比较好,..
------解决思路----------------------
data是byte[]通过下标访问指定数据
如果是Stream,可以用Postion定位再读取
------解决思路----------------------
英国有一个开源的networkComms2.3.1 C#通信框架,很稳定,您可以试一下
------解决思路----------------------
用BinaryReader来读,想读多少都可以
ReadBoolean(),ReadChar(),ReadDouble()....