通过套接字将字符串和字节[]从Android应用程序发送到Python服务器

2024-05-20 22:04:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在以字节数组的形式从android应用程序发送一个图像。我以前可以将数组分部分发送,然后将这些部分放入python的列表中,但这会产生一些错误,因为python会在每个部分前面加载b',而这些部分将保留为字符串的一部分。所以我现在尝试发送整个字节数组。在发送数组之前,我会发送一个字符串,给出字节数组的大小,这样我就可以调用call.recv来获取正确的大小。你知道吗

bytes_len = int(clean_len(str(connection.recv(1024))))

其中clean\u len去掉了“\”和“b”

然后我使用 data = connection.recv(int(bytes_len) 但它输出的数据

Waiting on connection...
---------------------------------------------
Connection Accepted
Connection received from... ('192.168.1.89', 41568)
BYTES_LEN_RECV:  9640320 
METADATA_RECV:  m240,second_attempt,requalify,4,4,4
BYTE_ARRAY_RECV:  b'' #THIS IS THE ISSUE
Sending Response
Closing Connection to  ('192.168.1.89', 41568)

我从应用程序发送这样的字符串,后面紧跟着字节数组

printWriter.write(String.valueOf(bytes.length));
printWriter.flush();
printWriter.write(metadata);
printWriter.flush();
printWriter.close();

BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(socket.getOutputStream());
bufferedOutputStream.write(bytes,0,bytes.length);
bufferedOutputStream.flush();
bufferedOutputStream.close();
socket.close();

你能不能不发送那么长的字节数组?还是我错过了一些关键的未知步骤?你知道吗


Tags: 字符串应用程序closelen字节bytes数组connection