使用Socket自定义通讯协议的烦恼两台机器通讯,举个例子: 命令 | 正文数据接收数据后用 “|” 来拆份字符串,得到相应的命令和正文
这样以来正文中就不能包含  “|” 符号了??怎么办??
当然这只是个例子,有些情况下有很多协议中的符号,不能用在正文中的,用什么字符做协议字符 最安全呢???

解决方案 »

  1.   

    有这么干的吗?协议一般包括数据头和数据体,在数据头可以定义命令和数据体的长度,而且数据头的长度应该是固定的,这样Socket收数据时每次先收取数据头,然后分析出数据体的长度和命令,在去读数据体,
      

  2.   

    我看QQ通信协议中用的0X 16进值表示协议的,是什么意思? 是不是ASCII编码前32个非显示字符
      

  3.   

    我看QQ通信协议中用的0X 16进值表示协议的,是什么意思?
    ============================
    这个怎么看。。
      

  4.   

    我用的是&
    接到后用  string[] recStr=rec.Split('&');
    不过一般还是用长度来划分命令和内容
      

  5.   

    我们是参考jabber用xml做的协议,楼主可以参考一下。
      

  6.   

    用"|" 不行
    可以用"CMD=xxx&uid=xxx&pid=xxx" 这样形式。用'\0'分割一个消息段或者用XML 格式来传输