我正在尝试用java连接python服务器(来自我的同事)。现在的目标是发送一个json数组。我们先发送长度。它与一个等效的python客户机一起工作,我正试图将其翻译成python。在
这是我的java代码的节选
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
long length = (long) arraytosend.length();
out.print(length);
String arraytosend = new JSONArray(test2).toString();
out.println(new JSONArray(test2).toString());
python服务器首先读取如下长度(我刚刚复制了相关命令de):
^{pr2}$在“51”之后,它会立即失去连接。在
python客户机代码(我正试图将其翻译成java)的工作原理如下:
try:
raw_data = json.dumps(dict(data=data))
except:
logger.warning('Failed to create a json representation of the data')
return False
# TODO: this could fail for *very* large objects
raw_len = struct.pack('Q', len(raw_data))
try:
connection.sendall(raw_len)
connection.sendall(raw_data)
except Exception:
logger.warning('lost connection while sending data')
raise
您的接收器假设长度以8字节表示(N_bytes_MSG_LEN)。但是你把长的绳子送过来。PrintWriter.write(long)与PrintWriter.write(长期价值(长).toString)。例如,如果长度为356,则发送“356”。你应该先记下你的长度:“00000356”。在
我找到了解决方案,你必须考虑到java使用的。可以通过将服务器(python)代码更改为:
然后您可以发送:
^{pr2}$相关问题 更多 >
编程相关推荐