python – socket.error:[Errno 32]管道破裂
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – socket.error:[Errno 32]管道破裂,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1659字,纯文字阅读大概需要3分钟。
内容图文
![python – socket.error:[Errno 32]管道破裂](/upload/InfoBanner/zyjiaocheng/810/b2cce08447c8405581e7c7464da4648d.jpg)
我写了一个客户端 – 服务器python程序,客户端向服务器发送一个列表,服务器接收数组,删除列表的前两个元素并将其发送回客户端.
接收列表的服务器没有问题.但是当服务器想要发回已编辑的列表时,它显示错误:
socket.error:[Errno 32]管道破裂.
client.py和server.py是从具有不同ip的不同计算机运行的.我正在发布下面的client.py和server.py的代码:
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();
整个错误消息是:
Traceback (most recent call last):
File "server.py", line 22, in <module>
s.send(data_string1);
socket.error: [Errno 32] Broken pipe
如何解决此问题,以便客户端可以从服务器接收编辑列表而不会出现任何错误?
先感谢您.
解决方法:
你犯了一个小错误:
s.send(data_string1);
应该:
conn.send(data_string1);
还需要更改以下行:
socket.shutdown();到s.shutdown();
和:
socket.close();到s.close();
内容总结
以上是互联网集市为您收集整理的python – socket.error:[Errno 32]管道破裂全部内容,希望文章能够帮你解决python – socket.error:[Errno 32]管道破裂所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。