java如何通过socket发送16进制数据包

irro 2007-01-30 01:23:03
已有下位机通过ip转串口映射到ip+端口上去(物理通信没有问题了),现在下位机需要接受客户端发送过去的一串16进制的命令请求,然后返回结果,由于需要做成b/s的模式,所以现在想用java做客户端,请问该如何书写?因为java中在socket中只能传byte的数组;而byte的范围有限(-127~128)对于大的数就会溢出;请问如何解决?
下面是我的代码,请指教:

// 创建输入输出数据流
Socket s = null;
DataOutputStream dos = null;
DataInputStream dis = null;
s = new Socket("192.168.0.11", 9707);//需要数据传向的地址端口传输是透明传输由路由器解决不用考虑ip包的打包及解包
dos = new DataOutputStream(s.getOutputStream());
dis = new DataInputStream(s.getInputStream());

//字节数组(需要发送的指令)
byte[] b = new byte[10];
b[0] = (byte) 0xf8;
b[1] = (byte) 0xf9;
b[2] = (byte) 0x0f;
b[3] = (byte) 0xff;
b[4] = (byte) 0x24;
b[5] = (byte) 0x00;
b[6] = (byte) 0xfe;
b[7] = (byte) 0xff;

//System.out.println(b[1]);已经就溢出显示为-7


// 发送数据
dos.write(b);
dos.flush();
...全文
1574 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
3052world 2012-03-20
  • 打赏
  • 举报
回复
怎么没人回复了啊,我也遇到同样问题
renmin520 2012-02-18
  • 打赏
  • 举报
回复
这个问题后来是怎么处理的呢?
希望高手给予指教
我也遇到次问题
beck_716 2008-12-27
  • 打赏
  • 举报
回复
关注啊,我也遇到同样问题,pc机的另一端需要16进制的数据,传输协议是UDP,我用的是DatagramSocket类,如何发送16进制数据呢.
iqlife 2008-10-10
  • 打赏
  • 举报
回复
如何解决的?兄弟,告诉我啊
irro 2007-01-31
  • 打赏
  • 举报
回复
用其他方式还是解决的。
irro 2007-01-30
  • 打赏
  • 举报
回复
String倒是可以发送;不过对端必须接收的是16进制格式的数据才行;而且对端是工控机属于下位机不是pc,不能自己转换接受的数据。我也试过String s="f8 f9 0f ff 24 00 fe ff";s.getBytes();这样也不行的。有没有其他的办法。
mdxk 2007-01-30
  • 打赏
  • 举报
回复
使用String發送
在轉換

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧