skip to content

Python Echo Server

/ 1 min read

# A python script for echo server over TCP
import socket
import argparse
import sys

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


def start_server(port=5000):
    # Create a tuple for server address
    server_address = ('localhost', port)

    # Bind the socket to the port
    sock.bind(server_address)

    # Listen for incoming connections
    sock.listen(1)

    print('Server is listening at {}'.format(sock.getsockname()))

    while True:
        # Wait for a connection, and accept it
        client_socket, client_address = sock.accept()
        print('Connection from', client_address)

        # Receive data from client and send it back until client closes connection
        while True:
            data = client_socket.recv(1024)
            if not data:
                break

            client_socket.sendall(data)

        client_socket.close()
        print('Client closed connection')


if __name__ == '__main__':
    try:
        parser = argparse.ArgumentParser(description='Socket Server Example')
        parser.add_argument('--port', action='store', dest='port', type=int, required=False)
        args = parser.parse_args()
        port = args.port if args.port else 5000
        start_server(port)
    except KeyboardInterrupt:
        print('Interrupted.. closing server')
        try:
            sock.close()
        except Exception as e:
            print('Could not close socket: {}'.format(e))
    finally:
        sys.exit(0)
  • Save the snippet in server.py
  • Run the script with python3 server.py —port 5000