use*_*358 10 python sockets arrays
我有一个这样的阵列([1,2,3,4,5,6],[1,2,3,4,5,6]).我必须通过python中的STREAM/TCP套接字发送它.然后我必须在接收端收到相同的数组.
dan*_*opa 28
套接字是字节流,所以理想的是写你的协议(读这个)
这是没有协议的基本示例,您应该关心buffer - > 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)
Run Code Online (Sandbox Code Playgroud)
服务器:
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()
Run Code Online (Sandbox Code Playgroud)
小智 7
我使用 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())
Run Code Online (Sandbox Code Playgroud)
服务器:
import json
...
data = socket.recv(1024)
data = json.loads(data.decode())
arr = data.get("a")
var = data.get("c")
Run Code Online (Sandbox Code Playgroud)
这里我们反序列化 json 字符串,data.get("a")您可以使用它来解释为data.a
| 归档时间: |
|
| 查看次数: |
45081 次 |
| 最近记录: |