2016-07-16 10 views
2

TCPソケット経由でリストを送信したいが、サーバ側から受信したときに正確なリストを取得できない。より具体的には は、私はこのリストを持っていると言う:TCPソケット経由でリストを送信する方法 - Python

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]

、毎回私は私のコードで間違って何が起こっているのか、リストデータ

任意のアイデアのために異なる結果を得るプログラムを実行しますか?

ありがとうございます。

答えて

5

pickleまたはjsonを使用して、受信側に応じてリスト(またはそのような他のオブジェクト)をソケットに送信します。受信ホストがpythonを使用しているため、この場合はjsonは必要ありません。

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

受信側にpickle.loads(recvd_data)を使用してください。

参考:https://docs.python.org/2/library/pickle.html

+0

あなたは奇妙な文字列をもしかして – K09

+1

..私は漬物を試してみましたが、私は奇妙な何かを得ますか?しばらく待っていたら、もう少し説明を追加するか、ドキュメントを読むことができます。もしあなたがピクルスを理解していて、まだ変わったものを得ているなら、それを説明してください。 – shiva

+0

はい、私は変な文字列を取得します。私はあなたが投稿した文書を読んで、なぜピクルスを使う必要があるのか​​理解していました。しかし、私は本当に奇妙なことを記述することはできません。 – K09

関連する問題