qufudashaozi 2017-01-17 14:53 采纳率: 0%
浏览 2922

java socket 发送二进制流的问题

想通过java socket发送一个二进制流:
0x05 0x03 0x00 0x00 0x00 0x40 0x45 0xbe
说明:这个二进制不代表任何字符串,就是一个命令,服务器端能够识别。

做法是这样的,先申请一块空间赋值,然后发送出去。
char cmd[] = {0x05, 0x03, 0x00, 0x00, 0x00, 0x40, 0x45, 0xbe};
os.print(cmd);
os.flush

或者:
char cmd[] = {0x05, 0x03, 0x00, 0x00, 0x00, 0x40, 0x45, 0xbe};
String command = new String(cmd);
os.print(command);
os.flush

用wireshark抓包看的话,
实际发送的数据是:
0x05, 0x03, 0x00, 0x00, 0x00, 0x40, 0x45, 0x3f.

这个是怎么回事儿?有大神知道吗?
我试了下,貌似数据大于0x80的都有这个问题,是不是二进制转化为字符的时候会有特殊处理?如果我真想要发送一个大于0x80的二进制该怎么处理?

  • 写回答

4条回答 默认 最新

  • 「已注销」 2017-01-17 16:57
    关注

    既然是二进制,为什么不用byte类型呢

    评论

报告相同问题?

悬赏问题

  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。