Как отправить список через TCP-сокеты - Python

Я хочу отправить список через сокеты TCP, но не могу получить точный список при получении со стороны сервера. Чтобы быть более конкретным, скажите, что у меня есть этот список:

 y=[0,12,6,8,3,2,10] 

Затем я отправляю каждый элемент списка следующим образом:

 for x in y :
 s.send(str(x))

Теперь код сервера для получения данных выглядит так:

 while True:
 data = connection.recv(4096)
 if data:
 print('received "%s"' % data)             
 else:
 print('no more data from', client_address)
 break

Проблема в том, что когда я запускаю программу, я получаю не тот же список, а что-то вроде этого:

Данные = [012,6,83,210]

Кроме того, каждый раз, когда я запускаю программу, я получаю другой результат для списка данных

Есть идеи, что не так с моим кодом?

Ответы на вопрос(1)

Решение Вопроса

использованиеpickle или жеjson отправить список (или любой другой объект в этом отношении) через сокеты в зависимости от принимающей стороны. Вам не нужноjson в этом случае в качестве принимающего хоста используется python.

import pickle
y=[0,12,6,8,3,2,10] 
data=pickle.dumps(y)
s.send(data)

использованиеpickle.loads(recvd_data) на принимающей стороне.

Ссылка:https://docs.python.org/2/library/pickle.html

 shiva17 июл. 2016 г., 19:57
Вы можете принять ответ, если он это сделал.
 Moras17 июл. 2016 г., 20:04
Знаете ли вы что-нибудь о коде Рида-Соломона?
 shiva17 июл. 2016 г., 20:06
Нет, никогда не слышал об этом. Но прочитаю об этом, как только у меня будет время.
 Moras16 июл. 2016 г., 18:15
Я пробовал мариновать, но получаю что-то странное ..
 shiva16 июл. 2016 г., 18:29
Вы имели в виду странную строку? Если потом подождать некоторое время, я добавлю немного больше объяснений, или вы можете прочитать документы. Если вы понимаете рассол и все еще получаете что-то странное, пожалуйста, опишите это.
 Moras16 июл. 2016 г., 22:24
Да, я получаю странную строку. Я только что прочитал документы, которые вы опубликовали, и понял, почему мне нужно использовать рассол. Тем не менее, я не могу описать эту странную вещь ..
 shiva17 июл. 2016 г., 02:41
Это потому, что данные не получены полностью на принимающей стороне. Попробуйте положитьconnection.recv(4096) внутри цикла и цикла, пока вы не получили полные данные.
 shiva18 июл. 2016 г., 04:59
Можете ли вы привести пример, дающий ввод и соответствующий вывод.
 Moras16 июл. 2016 г., 22:42
я использовалpickle.loads(connection.recv(4096)) на принимающей стороне, но я получаю EOFError. Используется try-исключением, но оператор else никогда не становится истинным
 Moras18 июл. 2016 г., 09:21
Неважно, это должно быть неправильно .. Спасибо, хотя

Ваш ответ на вопрос