gpt4 book ai didi

java - 通过套接字读写字节数据包

转载 作者:行者123 更新时间:2023-11-30 02:54:47 25 4
gpt4 key购买 nike

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

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

参数:方法名(1字节),有效载荷长度(2字节),有效载荷(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() 在您测试它时不可能为假。

关于java - 通过套接字读写字节数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23467115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com