From 7988b3dd381f3a2cf9f27fb7c06ebab9fa706571 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B9=20=D0=A8=D0=B5?= =?UTF-8?q?=D1=80=D1=81=D1=82=D0=BD=D0=B5=D0=B2?= Date: Wed, 4 Feb 2026 17:01:41 +0300 Subject: [PATCH] =?UTF-8?q?=D1=87=D0=B0=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chat.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ udp-broad.py | 8 ++++++++ 2 files changed, 54 insertions(+) diff --git a/chat.py b/chat.py index e69de29..ec431b2 100644 --- a/chat.py +++ b/chat.py @@ -0,0 +1,46 @@ +import socket +import threading + +# Константы +BROADCAST_IP = "255.255.255.255" +PORT = 10000 +BUFFER_SIZE = 1024 + +def send_messages(sock, username): + while True: + message = input() + if message.startswith("/pm"): + try: + _, target_ip, private_message = message.split(" ", 2) + sock.sendto(f"PM {username}: {private_message}".encode(), (target_ip, PORT)) + except ValueError: + print("Неверный формат команды. Используйте: /pm <сообщение>") + else: + sock.sendto(f"BC {username}: {message}".encode(), (BROADCAST_IP, PORT)) + +def receive_messages(sock): + while True: + data, addr = sock.recvfrom(BUFFER_SIZE) + message = data.decode() + if addr[0] != socket.gethostbyname(socket.gethostname()): + print(f"[{addr[0]}] {message}") + +# Настройка сокета +sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) +sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) + +# Привязка к порту +sock.bind(("", PORT)) + +# Имя пользователя +username = input("Введите ваше имя: ") + +# Запуск потоков для отправки и получения сообщений +send_thread = threading.Thread(target=send_messages, args=(sock, username)) +receive_thread = threading.Thread(target=receive_messages, args=(sock,)) + +send_thread.start() +receive_thread.start() + +send_thread.join() +receive_thread.join() \ No newline at end of file diff --git a/udp-broad.py b/udp-broad.py index e69de29..e3bf878 100644 --- a/udp-broad.py +++ b/udp-broad.py @@ -0,0 +1,8 @@ +import socket + +client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) +client.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) +client.sendto(b'hello server', ('172.20.10.15', 10001)) +#data, _ = client.recvfrom(1024) +print(f"Ответ от сервера") +client.close() \ No newline at end of file