У меня очень простой TCP-сервер в Python 3.6, и я хотел бы использовать его для отправки произвольных объектов.
Я могу отправить простой список с этим кодом:
myList = [99, 88]
current_connection.send(bytes(myList))
Однако этот код завершается ошибкой с исключением 'dict' object cannot be interpreted as an integer
.
myList = [99,88,{'a': 3},77]
current_connection.send(bytes(myList))
Как я могуотправить это list
, которое содержит tuple
?
Я также хотел бы отправить пользовательский объект, подобный этому:
myObject = customObject()
current_connection.send(bytes(myObject))
Однако этот код вызывает исключение cannot convert 'customObject' object to bytes
.Как правильно отправить пользовательский объект?
Есть ли метод, который я должен использовать, кроме socket.send ()?
Вот полный код:
import socket
def listen():
connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connection.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
connection.bind(('localhost', 5555))
connection.listen(10)
while True:
current_connection, address = connection.accept()
while True:
data = current_connection.recv(2048)
try:
#myList = [99,88,{'a': 3},77]
myList = [99, 88]
current_connection.send(bytes(myList))
except Exception as e:
print(e)
print(data)
if __name__ == "__main__":
try:
listen()
except KeyboardInterrupt:
pass
print('done')
Если send()
не может сделать то, что я описал, есть ли более эффективный способ отправки данных?