[size=13px]写了一个客户端程序,现在可以建立连接并发送CString类的数据成功了。但是要把要发送的数据根据协议打包,发给设备让其识别。我现在应该怎么做?要将数据转换为十六进制和包头(HEAD)合并再发送么?首先问我这个思路是不是正确的?如果是正确的我应该怎么转换?组合的话是不是用CString中的+就可以了?[/size]

解决方案 »

  1.   

    按照你的协议要求定义数据结构,如果是数值,转换成网络字节序。你可以参考这里有socket程序,实现了很多网络协议:
    http://download.csdn.net/detail/geoff08zhang/4571358
      

  2.   

    组合的话是不是用CString中的+就可以了?
    这个倒是可以!
      

  3.   

    CString中的+字符串  包我不懂等大神把!
      

  4.   

    网络通信最好不要用CString
    用char 更好些
      

  5.   

    CString? 你知道它有固定长度么?数据结构算是白学了. 
      

  6.   

    哈?CString我就了解个大概而已,用起来方便简单。。
      

  7.   

    用BYTE数组吧 把结构单字节对齐放到 byte数组里边 接收方也必须单字节对齐 最好不要用CString类 用char[]取代
      

  8.   

    具体问一下哈,就是根据协议的话,包头是01 01 01 00 06 00,包身是一个CString类的字符串。我是要把CString的字符串转换为十六进制,然后跟包头组包,再发送么?
    而且有人提到的网络字节序,我直接使用Send函数就能成功发送数据了,并没有进行字节序的转换。是因为我的主机序跟网络字节序是一致的么?
      

  9.   


    找到答案了,声明一个buf临时变量,将包头copy进去,再将CString类数据转换为char *,再copy到临时变量中。这样包即组装好。然后将buf发送即可。
    包头使用结构体存储。