drh

dfg

import socket

HOST = ('127.0.0.1', 5001)

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as soc:
    soc.bind(HOST)
    soc.listen()
    while True:
        connect, addr = soc.accept()
        with connect:
            print(f'Установлено соединение с {addr}')
            data = connect.recv(1024)
            if data:
                print(f"Получено: {data.decode('utf-8')}")
                connect.sendall(data)


Лист. 1. Сервер

import socket

HOST = ('127.0.0.1', 5001)

# with автоматически применяет метод close() к оиспользуемому объекту
while True:
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as soc:
        outsend = input('Введите сообщение: ')
        soc.connect(HOST)
        soc.sendall(bytes(outsend, 'utf-8'))
        data = soc.recv(1024)
        print(f"Echo: {data.decode('utf-8')}")

Лист. 2. Клиент