クライアントがサーバにリストを送信し、サーバが配列を受け取り、リストの最初の2つの要素を削除して、それを元に戻すクライアント - サーバpythonプログラムを書いたクライアント。 リストを受信しているサーバーに問題はありません。しかし、サーバーが編集したリストを返送したい場合、エラー: socket.error: [Errno 32] Broken pipe
が表示されています。 client.pyとserver.pyは異なるIPを持つ異なるマシンから実行されています。socket.error:[Errno 32]壊れたパイプ
Client.py
import socket, pickle
HOST = '192.168.30.218'
PORT = 50010
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
arr = ['CS','UserMgmt','AddUser','Arnab','Password']
data_string = pickle.dumps(arr)
s.send(data_string)
data = s.recv(4096)
data_arr1 = pickle.loads(data)
s.close()
print 'Received', repr(data_arr1)
print data_arr1;
Server.py:
はimport socket, pickle;
HOST = '127.0.0.1';
PORT = 50010;
s= socket.socket(socket.AF_INET, socket.SOCK_STREAM);
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1);
s.bind(('',PORT));
s.listen(1);
conn, addr = s.accept();
print 'Connected by' , addr;
data_addr = list();
while 1:
data = conn.recv(4096);
if not data: break;
data_addr = pickle.loads(data);
print 'Received Data', repr(data_addr);
print data_addr;
data_addr.pop(0);
data_addr.pop(0);
print data_addr;
data_string1 = pickle.dumps(data_addr);
s.send(data_string1);
break;
conn.close();
socket.shutdown();
socket.close();
全体のエラーMSGがある:私は以下のclient.pyとserver.pyためのコードを掲載してい
Traceback (most recent call last):
File "server.py", line 22, in <module>
s.send(data_string1);
socket.error: [Errno 32] Broken pipe
クライアントが編集したリストをサーバーからエラーなく受信できるように、この問題を解決するにはどうすればよいですか? ありがとうございます。あなたは小さなミス作ら
メッセージがどこから来たのかを正確に示すために、エラートレースバック全体を含めてください。 – cdarke
トレースバック(直前の最後のコール): ファイル "server.py"、行22、 s.send(data_string1); socket.error:[Errno 32]壊れたパイプ これはエラーメッセージ全体です。 –
ArnabC
OK、おそらくクライアントは 'recv'を落としてソケットを閉じました。おそらく、ソケットを早く閉じている理由を調べるために、クライアントをトレースする必要があります( 'print'文を入れてください)。 http://stackoverflow.com/questions/11866792/how-to-prevent-errno-32-broken-pipe – cdarke