Skip to content
13 changes: 13 additions & 0 deletions works/K3321/Борисов_Игнат/lab_6/task1/client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import socket

def run_client():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))

client_socket.sendall("Hello, server".encode('utf-8'))
print(client_socket.recv(1024).decode('utf-8'))

client_socket.close()

if __name__ == "__main__":
run_client()
19 changes: 19 additions & 0 deletions works/K3321/Борисов_Игнат/lab_6/task1/server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import socket

def run_server():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen(1)

conn, addr = server_socket.accept()

data = conn.recv(1024).decode('utf-8')
if data == "Hello, server":
print(data)
conn.sendall("Hello, client".encode('utf-8'))

conn.close()
server_socket.close()

if __name__ == "__main__":
run_server()
19 changes: 19 additions & 0 deletions works/K3321/Борисов_Игнат/lab_6/task2/client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import socket

def run_client():
base = input("Введите длину основания: ")
height = input("Введите высоту: ")

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 1234))

message = f"{base} {height}"
client_socket.sendall(message.encode('utf-8'))

result = client_socket.recv(1024).decode('utf-8')
print("Площадь:", result)

client_socket.close()

if __name__ == "__main__":
run_client()
22 changes: 22 additions & 0 deletions works/K3321/Борисов_Игнат/lab_6/task2/server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import socket

def parallelogram_area(base, height):
return base * height

def run_server():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 1234))
server_socket.listen(1)

conn, addr = server_socket.accept()

data = conn.recv(1024).decode('utf-8')
base, height = map(float, data.split())
area = parallelogram_area(base, height)
conn.sendall(str(area).encode('utf-8'))

conn.close()
server_socket.close()

if __name__ == "__main__":
run_server()
39 changes: 39 additions & 0 deletions works/K3321/Борисов_Игнат/lab_6/task3/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<!DOCTYPE html>
<html>
<head>
<title>Работа с таблицами</title>
</head>
<body>
<table border="2” style="width:80%">
<!-- <caption align = "bottom">Список сотрудников</caption> -->
<caption style = "caption-side:bottom">Список сотрудников</caption>
<tr>
<th>Фамилия</th>
<th>Имя</th>
<th>Отчество</th>
<th>Город</th>
</tr>
<tr>
<td rowspan = "2">Пупкин</td>
<td>Василий</td>
<td>Петрович</td>
<td rowspan = "2">Москва</td>
</tr>
<tr>
<!-- В этом ряду удалены две ячейки -->
<td>Феофан</td>
<td>Васильевич</td>
</tr>
<tr>
<td>Шашкин</td>
<td>Сидор</td>
<td>Богданович</td>
<td>Санкт-Петербург</td>
</tr>
<tr>
<td colspan = "3">Лютикова Аделина Федоровна</td>
<td>Тверь</td>
</tr>
</table>
</body>
</html>
26 changes: 26 additions & 0 deletions works/K3321/Борисов_Игнат/lab_6/task3/server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import socket

def run_server():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8080))
server_socket.listen(1)

while True:
conn, addr = server_socket.accept()
request = conn.recv(1024)

with open("index.html", "r", encoding="utf-8") as f:
content = f.read()

response = (
"HTTP/1.1 200 OK\r\n"
"Content-Type: text/html; charset=utf-8\r\n"
f"Content-Length: {len(content.encode('utf-8'))}\r\n"
"\r\n"
+ content
)
conn.sendall(response.encode('utf-8'))
conn.close()

if __name__ == "__main__":
run_server()
33 changes: 33 additions & 0 deletions works/K3321/Борисов_Игнат/lab_6/task4/client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import socket
import threading

def receive_messages(client_socket):
while True:
try:
message = client_socket.recv(1024).decode('utf-8')
if message == "NICK":
client_socket.send(nickname.encode('utf-8'))
else:
print(message)
except:
print("Ошибка соединения")
client_socket.close()
break

def write_messages(client_socket):
while True:
message = input()
if message:
client_socket.send(f"{nickname}: {message}".encode('utf-8'))

if __name__ == "__main__":
nickname = input("Введите ваше имя: ")

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))

receive_thread = threading.Thread(target=receive_messages, args=(client_socket,))
receive_thread.start()

write_thread = threading.Thread(target=write_messages, args=(client_socket,))
write_thread.start()
58 changes: 58 additions & 0 deletions works/K3321/Борисов_Игнат/lab_6/task4/server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import socket
import threading

clients = []
nicknames = []

def broadcast(message, sender_conn):
for client in clients:
if client != sender_conn:
try:
client.send(message)
except:
client.close()
remove_client(client)

def remove_client(client):
if client in clients:
index = clients.index(client)
clients.remove(client)
nickname = nicknames.pop(index)
broadcast(f"{nickname} вышел из чата.".encode('utf-8'), None)
print(f"Пользователь {nickname} отключился.")

def handle_client(client):
while True:
try:
message = client.recv(1024)
if not message:
remove_client(client)
break
broadcast(message, client)
except:
remove_client(client)
break

def receive_connections():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen()

print("Сервер запущен. Ожидание подключений...")

while True:
client, address = server_socket.accept()
client.send("NICK".encode('utf-8'))
nickname = client.recv(1024).decode('utf-8')
nicknames.append(nickname)
clients.append(client)

print(f"Пользователь {nickname} подключился с {address}")
broadcast(f"{nickname} вошел в чат.".encode('utf-8'), client)
client.send("Подключение установлено. Добро пожаловать в чат!".encode('utf-8'))

thread = threading.Thread(target=handle_client, args=(client,))
thread.start()

if __name__ == "__main__":
receive_connections()
Binary file not shown.