尝试在 Python 套接字中将数据从服务器发送到客户端时出现管道损坏错误

问题描述

我正在尝试使用“普通”Python 套接字将数据从服务器传输到客户端,而不使用任何异步编程。我的用例如下:我希望本地 Raspberry Pi 连接到我的 Internet 公开服务器,并且服务器在发生给定事件时通过创建的套接字发送数据。

我遵循了几个关于 Python 中简单套接字编程的教程来构建以下代码:

server.py

import socket
import time

def server():
    PORT = 65432
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    s.bind(('0.0.0.0',PORT))
    s.listen(1)
    conn,address=s.accept()  # accept an incoming connection using accept() method which will block until a new client connects
    print("address: ",address[0])
    time.sleep(5)
    s.send("hey".encode())
    conn.close()
    return

server()

客户端.py

import socket
import time

HOST = "my.remote.domain"
PORT = 65432

with socket.socket(socket.AF_INET,socket.SOCK_STREAM) as s:
    s.connect((HOST,PORT))
    while True :
        print(s.recv(1024))
        time.sleep(1)

在各自的机器上启动服务器和客户端时,我可以看到连接正确,因为客户端的 IP 地址打印在服务器的日志中。但是,几秒钟后,在发送任何数据之前,我在服务器端收到以下错误:

address:  client_ip_address_appears_here
Traceback (most recent call last):
  File "main.py",line 32,in <module>
    receiver()
  File "main.py",line 18,in receiver
    s.send("heeey".encode())
BrokenPipeError: [Errno 32] Broken pipe

同时在客户端,没有接收到数据:

b''
b''
b''
b''
b''
b''
b''
b''
b''

我尝试处理套接字的方式是否存在概念上的问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)