Android - 读取tcp套接字数组字节

时间:2014-02-13 19:47:13

标签: java android sockets modbus tcpsocket

我有一块使用modbus通讯的电路板,我希望与Android智能手机建立连接。 使用jamod库它不会创建连接,所以我使用了标准的tcp套接字。 通过这种方式,我可以创建连接,我可以向板上发送一个字节数组。 当我想阅读董事会的回复时,问题就出现了。

这是代码:

byte[] asdo = {(byte)0x01, (byte)0x01, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0xff, (byte)0xff};

DataOutputStream scrittura = new DataOutputStream(socket.getOutputStream());

scrittura.flush();

scrittura.write(asdo);

scrittura.flush();

这段代码是我在main上调用的一个帖子。 该板的回复是一个字节数组,如'asdo',有六个十六进制字节。

如何阅读回复并将其转换为字符串,以便我可以阅读?

谢谢!

2 个答案:

答案 0 :(得分:2)

由于您拥有byte[]数据(数组),因此可以通过简单的方式将数据直接读入byte[]

InputStream stream = socket.getInputStream();
byte[] data = new byte[30];
int count = stream.read(data);

这会立即读取并返回读取的出现次数。

答案 1 :(得分:2)

如果您事先知道预期回复的大小,则应使用DataInputStream.readFully();,否则DataInputStream.read(byte[]),将返回实际读取的字节数。