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()