python - 套接字错误 : [Errno 32] Broken pipe

标签 python python-2.7 sockets network-programming

我写了一个客户端-服务器 python 程序,其中客户端向服务器发送一个列表,服务器接收数组,删除列表的前两个元素并将其发送回客户端。 服务器接收列表没有问题。但是当服务器要发回编辑后的列表时,它显示错误: socket.error: [Errno 32] 管道损坏。 client.py 和 server.py 从具有不同 ip 的不同机器运行。我在下面发布了 client.py 和 server.py 的代码:

客户端.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;

服务器.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 - 套接字错误 : [Errno 32] Broken pipe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41014252/

相关文章:

python - 具有阻塞请求的 Gevent 异步服务器

python httplib 和断开的 tcp 连接

python - 使用 Pandas 获取空单元格的行和列

python - 使用类反转 python 中的字符串数组

python - Python中的for循环造句

python - python中的N叉树

java - 在 Java 中验证 SSL 证书的通用名称

python - Angular 路由器不使用 ng build 与 Flask 服务器交互

python - 使用numpy将数组分组为嵌套结构

python - 错误 : No similarly named formulae found. 错误:没有名称为 "python"的可用公式或桶