From 1b49b733a141963d7ca697aa4a9a7b3dc9b8b4c6 Mon Sep 17 00:00:00 2001 From: max Date: Sun, 24 May 2026 23:24:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=203=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- create_repo.py | 28 ++++++++++++++++++++++++++++ gitea_api.py | 23 +++++++++++++++++++++++ http_requests.py | 41 +++++++++++++++++++++++++++++++++++++++++ http_socket.py | 26 ++++++++++++++++++++++++++ src/tcp_client.py | 15 +++++++++++++++ src/tcp_server.py | 34 ++++++++++++++++++++++++++++++++++ src/udp_client.py | 20 ++++++++++++++++++++ src/udp_server.py | 26 ++++++++++++++++++++++++++ 9 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 create_repo.py create mode 100644 gitea_api.py create mode 100644 http_requests.py create mode 100644 http_socket.py diff --git a/.gitignore b/.gitignore index f4b25c8..7b86ff3 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,5 @@ token.txt # Временные файлы *.tmp *.bak -*.swp \ No newline at end of file +*.swp +.env \ No newline at end of file diff --git a/create_repo.py b/create_repo.py new file mode 100644 index 0000000..5605d97 --- /dev/null +++ b/create_repo.py @@ -0,0 +1,28 @@ +import os +import requests + +from dotenv import load_dotenv + +load_dotenv() + +TOKEN = os.getenv("TOKEN") + +headers = { + "Authorization": f"token {TOKEN}" +} + +data = { + "name": "lab3-api-test" +} + +response = requests.post( + "https://git.vyatsu.ru/api/v1/user/repos", + headers=headers, + json=data +) + +print("Статус:", response.status_code) + +print(response.json()) + +input() diff --git a/gitea_api.py b/gitea_api.py new file mode 100644 index 0000000..abc663b --- /dev/null +++ b/gitea_api.py @@ -0,0 +1,23 @@ +import os +import requests + +from dotenv import load_dotenv + +load_dotenv() + +TOKEN = os.getenv("TOKEN") + +headers = { + "Authorization": f"token {TOKEN}" +} + +response = requests.get( + "https://git.vyatsu.ru/api/v1/user", + headers=headers +) + +print("Статус:", response.status_code) + +print(response.json()) + +input("\nНажми Enter...") diff --git a/http_requests.py b/http_requests.py new file mode 100644 index 0000000..5066635 --- /dev/null +++ b/http_requests.py @@ -0,0 +1,41 @@ +import socket + +client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + +print("Подключение к серверу...") + +client.connect(("vyatsu.ru", 80)) + +request = ( + "GET / HTTP/1.1\r\n" + "Host: vyatsu.ru\r\n" + "User-Agent: Mozilla/5.0\r\n" + "Accept: */*\r\n" + "Connection: close\r\n" + "\r\n" +) + +print("Отправка запроса...\n") + +client.sendall(request.encode()) + +response = b"" + +running = True + +while running: + + data = client.recv(4096) + + if data: + response += data + else: + running = False + +decoded = response.decode(errors="ignore") + +print(decoded[:5000]) + +client.close() + +input("\nНажми Enter...") diff --git a/http_socket.py b/http_socket.py new file mode 100644 index 0000000..b3f02a0 --- /dev/null +++ b/http_socket.py @@ -0,0 +1,26 @@ +import socket + +client = socket.socket( + socket.AF_INET, + socket.SOCK_STREAM +) + +client.connect(("vyatsu.ru", 80)) + +request = ( + "GET / HTTP/1.1\r\n" + "Host: vyatsu.ru\r\n" + "User-Agent: python-requests/2.32.3\r\n" + "Accept-Encoding: gzip, deflate\r\n" + "Accept: */*\r\n" + "Connection: keep-alive\r\n" + "\r\n" +) + +client.sendall(request.encode()) + +response = client.recv(4096) + +print(response.decode(errors="ignore")) + +client.close() diff --git a/src/tcp_client.py b/src/tcp_client.py index e69de29..2215186 100644 --- a/src/tcp_client.py +++ b/src/tcp_client.py @@ -0,0 +1,15 @@ +import socket + +client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + +client.connect(("127.0.0.1", 10000)) + +message = input("Введите сообщение: ") + +client.sendall(message.encode()) + +data = client.recv(1024) + +print(f"Ответ сервера: {data.decode()}") + +client.close() diff --git a/src/tcp_server.py b/src/tcp_server.py index e69de29..94b5ac3 100644 --- a/src/tcp_server.py +++ b/src/tcp_server.py @@ -0,0 +1,34 @@ +import socket + +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + +server.bind(("0.0.0.0", 10000)) + +server.listen(1) + +print("TCP сервер запущен") + +running = True + +while running: + + conn, addr = server.accept() + + print(f"Подключение от {addr}") + + data = conn.recv(1024) + + if data: + + text = data.decode() + + print(f"Получено: {text}") + + conn.sendall(data.upper()) + + if text.upper() == "EXIT": + running = False + + conn.close() + +server.close() diff --git a/src/udp_client.py b/src/udp_client.py index e69de29..83897f5 100644 --- a/src/udp_client.py +++ b/src/udp_client.py @@ -0,0 +1,20 @@ +import socket + +client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + +running = True + +while running: + + message = input("Введите сообщение: ") + + client.sendto(message.encode(), ("127.0.0.1", 12000)) + + data, _ = client.recvfrom(1024) + + print(f"Ответ сервера: {data.decode()}") + + if message.upper() == "EXIT": + running = False + +client.close() diff --git a/src/udp_server.py b/src/udp_server.py index e69de29..cdbdc4f 100644 --- a/src/udp_server.py +++ b/src/udp_server.py @@ -0,0 +1,26 @@ +import socket + +server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + +server.bind(("0.0.0.0", 12000)) + +print("UDP сервер запущен") + +running = True + +while running: + + data, addr = server.recvfrom(1024) + + text = data.decode() + + print(f"Сообщение от {addr}: {text}") + + response = "СЕРВЕР: " + text[::-1] + + server.sendto(response.encode(), addr) + + if text.upper() == "EXIT": + running = False + +server.close()