From 672faa6a3d58ffa5697197364de7bd4f78befa20 Mon Sep 17 00:00:00 2001 From: stud203999 Date: Fri, 8 May 2026 00:45:40 +0300 Subject: [PATCH] Task complete. TCP + UDP + HTTP + API Gitea --- README.md | 1 - src/gitea_create_repo.py | 15 +++++++++++++++ src/gitea_read.py | 9 +++++++++ src/http_requests_vyatsu.py | 4 ++++ src/http_socket_vyatsu.py | 9 +++++++++ src/http_socket_vyatsu_2-4.py | 17 +++++++++++++++++ src/tcp_client.py | 13 +++++++++++++ src/tcp_server.py | 25 +++++++++++++++++++++++++ src/udp_client.py | 7 +++++++ src/udp_server.py | 10 ++++++++++ 10 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 src/gitea_create_repo.py create mode 100644 src/gitea_read.py create mode 100644 src/http_requests_vyatsu.py create mode 100644 src/http_socket_vyatsu.py create mode 100644 src/http_socket_vyatsu_2-4.py create mode 100644 src/tcp_client.py create mode 100644 src/tcp_server.py create mode 100644 src/udp_client.py create mode 100644 src/udp_server.py diff --git a/README.md b/README.md index d333776..d2475ff 100644 --- a/README.md +++ b/README.md @@ -1,2 +1 @@ Лабораторная работа №3 -Медицинский центр \ No newline at end of file diff --git a/src/gitea_create_repo.py b/src/gitea_create_repo.py new file mode 100644 index 0000000..7ffae2d --- /dev/null +++ b/src/gitea_create_repo.py @@ -0,0 +1,15 @@ +import os +import requests +from dotenv import load_dotenv + +load_dotenv() +TOKEN = os.getenv("GITEA_WRITE_TOKEN") +headers = {"Authorization": f"token {TOKEN}", "Content-Type": "application/json"} + +data = { + "name": "lab3-network-Bortnikov", + "description": "Лабораторная работа №3 – сетевые соединения", + "private": True +} +response = requests.post("https://git.vyatsu.ru/api/v1/user/repos", json=data, headers=headers) +print(response.status_code, response.json()) \ No newline at end of file diff --git a/src/gitea_read.py b/src/gitea_read.py new file mode 100644 index 0000000..3115d96 --- /dev/null +++ b/src/gitea_read.py @@ -0,0 +1,9 @@ +import os +import requests +from dotenv import load_dotenv + +load_dotenv() +TOKEN = os.getenv("GITEA_READ_TOKEN") +headers = {"Authorization": f"token {TOKEN}"} +response = requests.get("https://git.vyatsu.ru/api/v1/user", headers=headers) +print(response.json()) \ No newline at end of file diff --git a/src/http_requests_vyatsu.py b/src/http_requests_vyatsu.py new file mode 100644 index 0000000..83588ae --- /dev/null +++ b/src/http_requests_vyatsu.py @@ -0,0 +1,4 @@ +import requests + +response = requests.get("http://vyatsu.ru") +print(response.text[:500]) \ No newline at end of file diff --git a/src/http_socket_vyatsu.py b/src/http_socket_vyatsu.py new file mode 100644 index 0000000..4c1fa7e --- /dev/null +++ b/src/http_socket_vyatsu.py @@ -0,0 +1,9 @@ +import socket + +client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +client.connect(('vyatsu.ru', 80)) +request = "GET / HTTP/1.1\r\nHost: vyatsu.ru\r\n\r\n" +client.sendall(request.encode()) +response = client.recv(4096) +print(response.decode()) +client.close() \ No newline at end of file diff --git a/src/http_socket_vyatsu_2-4.py b/src/http_socket_vyatsu_2-4.py new file mode 100644 index 0000000..0efc83a --- /dev/null +++ b/src/http_socket_vyatsu_2-4.py @@ -0,0 +1,17 @@ +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.31.0\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()) +client.close() \ No newline at end of file diff --git a/src/tcp_client.py b/src/tcp_client.py new file mode 100644 index 0000000..6dd4b04 --- /dev/null +++ b/src/tcp_client.py @@ -0,0 +1,13 @@ +import socket + +def send_message(message): + client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + client.connect(('127.0.0.1', 10000)) + client.sendall(message) + data = client.recv(1024) + print(f"Ответ от сервера: {data.decode()}") + client.close() + +send_message(b'hello server') + +send_message(b'EXIT') \ No newline at end of file diff --git a/src/tcp_server.py b/src/tcp_server.py new file mode 100644 index 0000000..721f3b0 --- /dev/null +++ b/src/tcp_server.py @@ -0,0 +1,25 @@ +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: + conn.close() + continue + + response = data.upper() + conn.sendall(response) + + if data.strip().upper() == b'EXIT': + print("Получена команда EXIT, сервер завершает работу.") + conn.close() + break + + conn.close() \ No newline at end of file diff --git a/src/udp_client.py b/src/udp_client.py new file mode 100644 index 0000000..75cd478 --- /dev/null +++ b/src/udp_client.py @@ -0,0 +1,7 @@ +import socket + +client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) +client.sendto(b'hello server', ('127.0.0.1', 10001)) +data, _ = client.recvfrom(1024) +print(f"Ответ от сервера: {data.decode()}") +client.close() \ No newline at end of file diff --git a/src/udp_server.py b/src/udp_server.py new file mode 100644 index 0000000..edeb966 --- /dev/null +++ b/src/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) #добавили модификацию .upper() \ No newline at end of file