zadanie2
This commit is contained in:
commit
2531835621
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
.venv/
|
||||||
|
.env
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
.vs/
|
||||||
|
.vscode/
|
||||||
32
README.md
Normal file
32
README.md
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# Laboratory work #3: Network connections in Python
|
||||||
|
|
||||||
|
## Completed tasks
|
||||||
|
|
||||||
|
1. **TCP client-server** (port 10000)
|
||||||
|
2. **UDP client-server** (port 10001)
|
||||||
|
3. **HTTP requests** (vyatsu.ru)
|
||||||
|
4. **Gitea API** (repository creation)
|
||||||
|
|
||||||
|
## How to run
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Activate virtual environment
|
||||||
|
.venv\Scripts\activate
|
||||||
|
|
||||||
|
# Run TCP
|
||||||
|
py tcp_server.py
|
||||||
|
py tcp_client.py
|
||||||
|
|
||||||
|
# Run UDP
|
||||||
|
py udp_server.py
|
||||||
|
py udp_client.py
|
||||||
|
|
||||||
|
# HTTP requests
|
||||||
|
py http_socket.py
|
||||||
|
py http_requests.py
|
||||||
|
|
||||||
|
# Gitea API (add token to .env first)
|
||||||
|
py gitea_api.py
|
||||||
|
|
||||||
|
## Author
|
||||||
|
Îí÷óðîâà Ïîëèíà Àëåêñååâíà, ÈÍÁá-2301-02-00
|
||||||
44
gitea_api.py
Normal file
44
gitea_api.py
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import os
|
||||||
|
import requests
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
|
||||||
|
TOKEN = os.getenv('GITEA_TOKEN')
|
||||||
|
BASE_URL = os.getenv('GITEA_URL', 'https://git.vyatsu.ru')
|
||||||
|
|
||||||
|
def get_user_info():
|
||||||
|
headers = {"Authorization": f"token {TOKEN}"}
|
||||||
|
response = requests.get(f"{BASE_URL}/api/v1/user", headers=headers)
|
||||||
|
if response.status_code == 200:
|
||||||
|
user = response.json()
|
||||||
|
print(f"User: {user.get('login')}")
|
||||||
|
print(f"Email: {user.get('email')}")
|
||||||
|
return user
|
||||||
|
else:
|
||||||
|
print(f"Error: {response.status_code}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def create_repository(repo_name):
|
||||||
|
headers = {
|
||||||
|
"Authorization": f"token {TOKEN}",
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
data = {
|
||||||
|
"name": repo_name,
|
||||||
|
"description": "Laboratory work #3: Network programming",
|
||||||
|
"private": False
|
||||||
|
}
|
||||||
|
response = requests.post(f"{BASE_URL}/api/v1/user/repos", headers=headers, json=data)
|
||||||
|
if response.status_code == 201:
|
||||||
|
repo = response.json()
|
||||||
|
print(f"Repository created: {repo.get('html_url')}")
|
||||||
|
return repo
|
||||||
|
else:
|
||||||
|
print(f"Error: {response.status_code}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
user = get_user_info()
|
||||||
|
if user:
|
||||||
|
create_repository(f"lab3-{user.get('login')}")
|
||||||
4
http_requests.py
Normal file
4
http_requests.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import requests
|
||||||
|
|
||||||
|
response = requests.get("http://vyatsu.ru")
|
||||||
|
print(response.text[:500])
|
||||||
9
http_socket.py
Normal file
9
http_socket.py
Normal file
@ -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()
|
||||||
8
tcp_client.py
Normal file
8
tcp_client.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import socket
|
||||||
|
|
||||||
|
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
client.connect(('127.0.0.1', 10000))
|
||||||
|
client.sendall(b'hello server')
|
||||||
|
data = client.recv(1024)
|
||||||
|
print(f"Server response: {data.decode()}")
|
||||||
|
client.close()
|
||||||
17
tcp_server.py
Normal file
17
tcp_server.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import socket
|
||||||
|
|
||||||
|
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
server.bind(("0.0.0.0", 10000))
|
||||||
|
server.listen(1)
|
||||||
|
print("TCP server started on port 10000")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
conn, addr = server.accept()
|
||||||
|
print(f"Connection from {addr}")
|
||||||
|
data = conn.recv(1024)
|
||||||
|
if not data:
|
||||||
|
break
|
||||||
|
conn.sendall(data.upper())
|
||||||
|
conn.close()
|
||||||
|
if data.upper() == b'EXIT':
|
||||||
|
break
|
||||||
7
udp_client.py
Normal file
7
udp_client.py
Normal file
@ -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"Server response: {data.decode()}")
|
||||||
|
client.close()
|
||||||
10
udp_server.py
Normal file
10
udp_server.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import socket
|
||||||
|
|
||||||
|
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
|
server.bind(('0.0.0.0', 10001))
|
||||||
|
print("UDP server started on port 10001")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
data, addr = server.recvfrom(1024)
|
||||||
|
print(f"Message from {addr}: {data.decode()}")
|
||||||
|
server.sendto(data.upper(), addr)
|
||||||
Loading…
Reference in New Issue
Block a user