日期:2014-05-20  浏览次数:20748 次

java如何通过socket发送16进制数据包
已有下位机通过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();


------解决方案--------------------
使用String發送
在轉換