配列の種類は([1,2,3,4,5,6],[1,2,3,4,5,6])
この。 PythonのSTREAM/TCPソケットで送信する必要があります。次に、受信側で同じ配列を受信する必要があります。
ソケットに送信する前にオブジェクトをシリアル化し、受信側でオブジェクトをシリアル化解除することができます。チェック これ
ソケットはバイトストリームなので、プロトコルを記述するのが理想的です(読み取り this )
これはプロトコルなしの基本的な例であり、バッファ-> recv()に注意する必要があります。小さすぎると、データが途切れます。そのため、不明なサイズのデータを送信する場合は、プロトコルを実装する必要があります。
クライアント:
import socket, pickle
Host = 'localhost'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((Host, PORT))
arr = ([1,2,3,4,5,6],[1,2,3,4,5,6])
data_string = pickle.dumps(arr)
s.send(data_string)
data = s.recv(4096)
data_arr = pickle.loads(data)
s.close()
print 'Received', repr(data_arr)
サーバ:
import socket
Host = 'localhost'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((Host, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(4096)
if not data: break
conn.send(data)
conn.close()
私はjsonを使用してこの問題を解決しました(ピクルスは安全でないと聞いたため)
クライアント:
_import json
...
arr1 = [1,2,3]
arr2 = [4,5,6]
someVar = 7
data = json.dumps({"a": arr1, "b": arr2, "c": someVar})
socket.send(data.encode())
_
サーバ:
_import json
...
data = socket.recv(1024)
data = json.loads(data.decode())
arr = data.get("a")
var = data.get("c")
_
ここでは、_data.a
_として解釈できるdata.get("a")
を使用して、json文字列をデシリアライズします。