首页 > 解决方案 > 编码 2D 列表

问题描述

如何在此处编码 2D 列表以发送到服务器,以便服务器可以打印 2D 列表?

错误:AttributeError:“列表”对象没有属性“编码”

代码:

Client.py

from socket import *
serverName = "localhost"
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))

input = [ 
            [1, 0, 1, 1, 0], 
            [1, 0, 0, 1, 0], 
            [1, 1, 1, 0, 1]
        ]

clientSocket.send(input.encode())

clientSocket.close()

Server.py

from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(('', serverPort))
serverSocket.listen(1)

print("The server is ready to receive!")

while True:
    connectionSocket, addr = serverSocket.accept()
    array = connectionSocket.recv(1024).decode()
    print(array)
    connectionSocket.close()

标签: pythonsocketsnetworking

解决方案


如果你只希望对端能够打印,或者发回二维列表,你可以直接发送一个字符串表示:

clientSocket.send(str(input).encode())

如果您希望它能够将数据处理为 2D 列表,您应该序列化列表,例如使用 json:

clientSocket.send(json.dumps(input).encode())

然后您可以使用以下命令检索列表:

list2D = json.loads(connectionSocket.recv(1024))

推荐阅读