通过套接字读取和写入字节数据包

我想通过Socket将Android设备连接到外部设备。 套接字成功连接外部设备。

现在,如果有任何数据需要外部设备,则将字节数据包数据的请求发送到订单下的套接字。 如果外部设备接收数据正确,则发送字节数据作为响应。

参数:methodname(1字节),payloadlength(2字节),payload(2字节)。

现在我的代码是……

Socket socket = new Socket("local exteranl device ip", 5000); if(socket.isConnected()) { int methodname = 5; int payload = 2151; int payloadLength = 2; ByteBuffer buffer = ByteBuffer.allocate(3 + payloadLength); // 3 = for method name + length buffer.order(ByteOrder.BIG_ENDIAN); // Just to be explicit buffer.put((byte) methodname); buffer.putShort((short) payloadLength); buffer.putShort((short) payload); buffer.rewind(); byte[] result = new byte[buffer.capacity()]; // Could also use result = buffer.array(); buffer.get(result); DataOutputStream classOUTstream = new DataOutputStream(socket.getOutputStream()); // socket is already connected classOUTstream.write(result); classOUTstream.flush(); InputStream stream = socket.getInputStream(); byte[] data = new byte[100]; int count = stream.read(data); } 

以上代码是Android,我只知道java的基本概念。 我得到-1结果计数。

任何人可以建议我或告诉我我的错误?

你这么做很难。 完全摆脱ByteBuffer并使用DataOutputStream所有方法。 他们都是大头。 我看不出任何错误,但很明显你必须发送同行不理解的东西,所以他正在关闭连接而不是发送回复。

注意:在您测试它时, Socket.isConnected()不可能是false。