试图通过套接字

时间:2015-09-12 04:34:45

标签: python arrays sockets pygame pickle

好的,我试图通过套接字发送一个数组。阵列是操纵杆的轴,因此x,y,z,滑块。

然后我通过套接字发送一次,然后在另一端收到它,然后在我收到错误的地方取消它

它给了我错误_pickle.UnpicklingError: unpickling stack underflow我不确定它意味着什么,但我读过它是因为数组被切断了。 客户端(使用Pygame获取操纵杆轴)

    x = j.get_axis(0)
    y = j.get_axis(1)
    slide = j.get_axis(2)
    z = j.get_axis(3)
    array = (x, y, slide, z)
    send_array = pickle.dumps(array)

只需使用socket.send(send_array)发送数组 然后我收到并尝试将其打印用于测试目的。

        raw_message = sc.recv(1024)
        (data1, data2, data3, data4) = pickle.loads(raw_message)
        print (data1)

由于

1 个答案:

答案 0 :(得分:1)

客户端:

import socket, pickle

HOST = 'localhost'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
arr = (YOUR ARRAY)
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()