[Python] Broken pipe error when trying to send data from server to client in Python sockets

Discussão em 'Python' iniciado por Stack, Janeiro 11, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to use "vanilla" Python sockets to transmit data from a server to a client, without using any asynchronous programming. My use case is the following: I would like a local Raspberry Pi to connect to my internet exposed server, and the server to send data through the created socket when a given event occurs.

    I followed several tutorials on simple socket programming in Python to build the following code:


    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()


    client.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)


    When launching the server and the client on their respective machine, I can see that the connexion is correctly made, since the IP address of the client is printed in the logs of the server. However, after few seconds and before sending any data, I get the following error on the server side:

    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


    Meanwhile on the client side, no data is received:

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


    Is there a conceptual problem in the way I try to handle the socket ?

    Continue reading...

Compartilhe esta Página