This commit is contained in:
Валерий Шерстнев 2026-02-04 17:01:41 +03:00
parent 2c72c6da13
commit 7988b3dd38
2 changed files with 54 additions and 0 deletions

46
chat.py
View File

@ -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 <ip> <сообщение>")
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()

View File

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