私はPythonサーバー(私の同僚から)とjavaを使って接続しようとしています。目的は(今のところ)json配列を送ることです。最初に長さを送ることから始めます。私はPythonに翻訳しようとしている同等のPythonクライアントで動作します。 ソケットを介してjSON配列の長さを送信する(Java to Python)
この
は(私は、関連するコマンドデをコピーした)私のJavaコードのpythonサーバが最初にこのような長さを読み込み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());
からの抜粋です:「51」の後
N_BYTES_MSG_LEN = 8
raw_len = connection.recv(N_BYTES_MSG_LEN)
# here it output 51 as raw_len
try:
msg_len = struct.unpack(MSG_LEN_TYPE, raw_len)[0]
print msg_len
logger.debug('announced message length: {}'.format(msg_len))
except:
logger.warning('could not interpret message length')
return None
# read the incoming message
raw_data = connection.recv(msg_len)
if len(raw_data) < msg_len:
logger.info('lost connection')
return None
すぐに接続が失われます。
(Iは、Javaに変換しようとしています)のpythonクライアントコードは、次のように動作します。
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
バイト? – dorien