From 972101851ce4cae9264968b728bea39d26381627 Mon Sep 17 00:00:00 2001 From: Egor Date: Wed, 4 Feb 2026 17:08:53 +0300 Subject: [PATCH] initial commit_2 --- lab.py | 0 tcp_client.py | 8 ++++++++ tcp_server.py | 21 +++++++++++++++++++++ udp_chat.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ udp_client.py | 8 ++++++++ udp_client_2.py | 8 ++++++++ udp_server.py | 10 ++++++++++ 7 files changed, 101 insertions(+) delete mode 100644 lab.py create mode 100644 tcp_client.py create mode 100644 tcp_server.py create mode 100644 udp_chat.py create mode 100644 udp_client.py create mode 100644 udp_client_2.py create mode 100644 udp_server.py diff --git a/lab.py b/lab.py deleted file mode 100644 index e69de29..0000000 diff --git a/tcp_client.py b/tcp_client.py new file mode 100644 index 0000000..b2427f4 --- /dev/null +++ b/tcp_client.py @@ -0,0 +1,8 @@ +import socket + +client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +client.connect(('172.20.10.10', 10000)) +client.sendall(b'hello server') +data = client.recv(1024) +print(f"Ответ от сервера: {data.decode()}") +client.close() \ No newline at end of file diff --git a/tcp_server.py b/tcp_server.py new file mode 100644 index 0000000..8f14be6 --- /dev/null +++ b/tcp_server.py @@ -0,0 +1,21 @@ +import socket + +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +server.bind(("0.0.0.0", 10000)) +server.listen(1) +print("TCP сервер запущен") + +while True: + + conn, addr = server.accept() + print(f"Подключение от {addr}") + + data = conn.recv(1024) + if not data: + break + conn.sendall(data.upper()) + + conn.close() + + if data.upper() == b'EXIT': + break \ No newline at end of file diff --git a/udp_chat.py b/udp_chat.py new file mode 100644 index 0000000..ec431b2 --- /dev/null +++ b/udp_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_client.py b/udp_client.py new file mode 100644 index 0000000..1e5cd30 --- /dev/null +++ b/udp_client.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', ('255.255.255.255', 10001)) +data, _ = client.recvfrom(1024) +print(f"Ответ от сервера: {data.decode()}") +client.close() \ No newline at end of file diff --git a/udp_client_2.py b/udp_client_2.py new file mode 100644 index 0000000..1e5cd30 --- /dev/null +++ b/udp_client_2.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', ('255.255.255.255', 10001)) +data, _ = client.recvfrom(1024) +print(f"Ответ от сервера: {data.decode()}") +client.close() \ No newline at end of file diff --git a/udp_server.py b/udp_server.py new file mode 100644 index 0000000..6d0dc06 --- /dev/null +++ b/udp_server.py @@ -0,0 +1,10 @@ +import socket + +server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) +server.bind(('0.0.0.0', 10001)) +print("UDP сервер запущен") + +while True: + data, addr = server.recvfrom(1024) + print(f"Сообщение от {addr}: {data.decode()}") + server.sendto(data.upper(), addr) \ No newline at end of file