c++ 客户端与java服务端的socket通信解析

现在有一个c++的socket服务数据格式为头部+消息体
头部为:0x549921ca + 消息体长度
消息体为:K:V

有个Java服务端去接收socket发过来的请求,但是为什么头部的信息都是乱码呢?

是因为头部是二进制流而不是文本流么? 那如果这样在java端如何解析这个头部

内容的话可以看到,但是也还是不确定拿到这个协议,在java这端如何使用

谢谢

阅读 5.1k
1 个回答

可以给出具体例子吗?比如发送前数据是什么,发送后数据是什么。

你的问题大概可以通过以下方式定位清楚:

  1. 确保数据开始发送正确:比如可以前4字节发个整型:5,看对端是否接收到的也是5。如果是,说明通信过程没没问题,否则就是通信过程本身有问题了。

  2. 如果确定了通信过程没问题,那么就看一下 是否是编码的问题:

        (1) 可以设置发送时候数据编码和接收端编码是否一直。尤其是带不带bom
        (2) 可以在发送端和接收端打印前4个字节的整数值,由于步骤1通过了,因此,这一步应该是两个打印的数值相等。否则,步骤1 不通过。
    

大概就这样可以定位出问题在哪里了。具体的问题 看不懂数据和代码 我也不好回答。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题