擅长:python、mysql、java
<p><strong>选项1:</strong></p>
<p>所以对于第一个选项,您可以设置end byte,它不会出现在实际消息中的任何地方。
您可以为例如“END”创建一个字符串,并将其转换为字节数组并通过java程序发送。接收后,可以使用decode()将其转换为字符串并进行比较。公司名称:</p>
<p>注意:要发送的结束字节必须小于或等于要解码的块的大小,并获得确切的结束字节。在</p>
<pre><code>byte_array = bytearray()
# receive the data in small chunks and print it
while True:
data = connection.recv(64)
command = data.decode()
if command != "END":
# output received data
logger.debug("Data: %s" % data)
byte_array.extend(data)
else:
# no more data quit the loop
logger.debug("no more data.")
break
logger.info("Generating response...")
connection.send(generate_response(byte_array))
logger.info("Sent response.")
</code></pre>
<p><strong>选项2:</strong></p>
<p>对于第二个选项,您需要修改while循环以根据元数据运行。我考虑过元数据将由第一个块组成,它将是发送。它可能会像:</p>
<p>字节数组=bytearray()</p>
^{pr2}$
<p><strong>选项3:</strong></p>
<p>如果您确定不会有网络延迟,并且唯一的问题是您的java程序必须等待来自python服务器的响应,直到超时发生</p>
<p><strong>选项4:</strong></p>
<p>您可以使用一个非阻塞套接字,它将一直运行到它在预定的时间段内无法接收。虽然我不推荐你的情况下,你可以看看它是否适合你的需要。在</p>