чат
This commit is contained in:
parent
2c72c6da13
commit
7988b3dd38
46
chat.py
46
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 <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()
|
||||
@ -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()
|
||||
Loading…
Reference in New Issue
Block a user