42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
# udp_server.py
|
|
import socket
|
|
import logging
|
|
|
|
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s')
|
|
|
|
|
|
def run_udp_server():
|
|
"""UDP сервер без установки соединения"""
|
|
|
|
HOST = '127.0.0.1'
|
|
PORT = 10001
|
|
|
|
# Создаем UDP сокет
|
|
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as server_socket:
|
|
server_socket.bind((HOST, PORT))
|
|
|
|
logging.info(f"🚀 UDP сервер запущен на {HOST}:{PORT}")
|
|
logging.info("UDP не требует установки соединения, просто ждет данные...")
|
|
|
|
try:
|
|
while True:
|
|
# Получаем данные и адрес отправителя
|
|
data, client_address = server_socket.recvfrom(1024)
|
|
received_text = data.decode('utf-8')
|
|
logging.info(f"📥 Получено от {client_address}: {received_text}")
|
|
|
|
# Отправляем обратно в верхнем регистре
|
|
modified_data = data.upper()
|
|
server_socket.sendto(modified_data, client_address)
|
|
logging.info(f"📤 Отправлено {client_address}: {modified_data.decode('utf-8')}")
|
|
|
|
if modified_data == b'EXIT':
|
|
logging.info("Получена команда выхода")
|
|
break
|
|
|
|
except KeyboardInterrupt:
|
|
logging.info("\nСервер остановлен")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
run_udp_server() |