tsest_rep/tcp_server.py

49 lines
2.2 KiB
Python

import socket
def run_tcp_server():
# Создаем TCP сокет
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Разрешаем повторное использование адреса
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# Привязываем сокет к адресу и порту
server.bind(("0.0.0.0", 10000))
# Начинаем прослушивание (максимум 1 подключение в очереди)
server.listen(1)
print("🚀 TCP сервер запущен на порту 10000")
print("Ожидание подключений...")
try:
while True:
# Принимаем подключение
conn, addr = server.accept()
print(f"✅ Подключение установлено от {addr}")
with conn:
while True:
# Получаем данные от клиента
data = conn.recv(1024)
if not data:
break
message = data.decode().strip()
print(f"📨 Получено сообщение: '{message}'")
# Проверяем команду завершения
if message.upper() == 'EXIT':
conn.sendall("🛑 Сервер завершает работу...".encode("utf-8"))
print("🛑 Получена команда EXIT, завершение работы сервера")
return
# Модифицируем сообщение и отправляем обратно
modified_message = f"🔄 ECHO: {message.upper()}"
conn.sendall(modified_message.encode())
print(f"📤 Отправлен ответ: '{modified_message}'")
except KeyboardInterrupt:
print("\n🛑 Сервер остановлен пользователем")
finally:
server.close()
print("🔒 Сокет сервера закрыт")
if __name__ == "__main__":
run_tcp_server()