Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import socket

HOST = '127.0.0.1'
PORT = 12345

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.send("Hello, server".encode())
data = s.recv(1024).decode()
print("Ответ от сервера:", data)
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import socket

HOST = '127.0.0.1'
PORT = 12345

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
print('Сервер запущен, ожидаем подключение...')

while True:
conn, addr = s.accept()
with conn:
print('Подключено к', addr)
data = conn.recv(1024)
print('Получено сообщение от клиента:', data.decode())
conn.sendall(b'Hello, client')
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import socket

HOST = '127.0.0.1'
PORT = 12346

a = float(input("Введите основание a: "))
b = float(input("Введите основание b: "))
h = float(input("Введите высоту h: "))

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.send(f"{a},{b},{h}".encode())
result = s.recv(1024).decode()
print("Ответ от сервера:", result)
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import socket

HOST = '127.0.0.1'
PORT = 12346

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
print(f"Математический сервер запущен на {HOST}:{PORT}")
while True:
conn, addr = s.accept()
with conn:
print(f"Клиент подключился: {addr}")
data = conn.recv(1024).decode()
print("Полученные данные:", data)
a, b, h = map(float, data.split(','))
s_trap = ((a + b) / 2) * h
conn.send(f"Площадь трапеции: {s_trap}".encode())
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>HTTP-сервер</title>
</head>
<body>
<h1>Привет от самодельного HTTP-сервера!</h1>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import socket

HOST = '127.0.0.1'
PORT = 8080

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
print(f"HTTP-сервер запущен на http://{HOST}:{PORT}")
while True:
conn, addr = s.accept()
with conn:
request = conn.recv(1024)
print(f"Запрос от {addr}:\n{request.decode()}")

with open("PROD\Task_3\index.html", "r", encoding="utf-8") as file:
html_content = file.read()

response = (
"HTTP/1.1 200 OK\n"
"Content-Type: text/html\n"
f"Content-Length: {len(html_content.encode())}\n\n"
f"{html_content}"
)
conn.sendall(response.encode())
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
const ws = new WebSocket("ws://localhost:8765");
const chat = document.getElementById("chat");
const msgInput = document.getElementById("msg");

let nickname = ""; // Инициализируем переменную
let nicknameSet = false;

ws.onmessage = (event) => {
const msg = event.data;

if (!nicknameSet && msg === "Введите никнейм:") {
const inputNickname = prompt("Введите ваш никнейм:");
if (inputNickname) {
nickname = inputNickname; // Сохраняем введенный ник
ws.send(nickname);
nicknameSet = true;
}
return;
}

if (msg.includes("Никнейм уже занят")) {
alert(msg);
ws.close();
return;
}

const messageElement = document.createElement("div");
messageElement.textContent = msg;

// Определяем тип сообщения
if (msg.includes("присоединился") || msg.includes("покинул")) {
messageElement.className = "system-message";
} else if (nickname && msg.startsWith(`${nickname}:`)) {
messageElement.className = "user-message";
} else {
messageElement.className = "other-message";
}

chat.appendChild(messageElement);
chat.scrollTop = chat.scrollHeight;
};

function sendMessage() {
const text = msgInput.value.trim();
if (text && nicknameSet) {
ws.send(text);
msgInput.value = "";
}
}

msgInput.addEventListener("keydown", (e) => {
if (e.key === "Enter") sendMessage();
});

ws.onclose = () => {
const messageElement = document.createElement("div");
messageElement.className = "system-message";
messageElement.textContent = "Соединение закрыто";
chat.appendChild(messageElement);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<!DOCTYPE html>
<html lang="ru">
<link rel="stylesheet" href="styles.css">
<head>
<meta charset="UTF-8">
<title>Web-chat</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
#chat {
height: 400px;
border: 1px solid #ccc;
padding: 10px;
overflow-y: scroll;
margin-bottom: 10px;
}
input {
width: 70%;
padding: 8px;
}
button {
padding: 8px 15px;
background-color: #4CAF50;
color: white;
border: none;
cursor: pointer;
}
</style>
</head>
<body>
<div class="container">
<h2>Web Chat</h2>
<div id="chat"></div>
<div>
<input id="msg" type="text" placeholder="Введите сообщение...">
<button onclick="sendMessage()">Отправить</button>
</div>
</div>
<script src="chat.js"></script>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import asyncio
import websockets

clients = {} # websocket: nickname

async def handler(websocket):
try:
await websocket.send("Введите никнейм:")
nickname = await websocket.recv()

# Проверка на уникальность
if nickname in clients.values():
await websocket.send("Никнейм уже занят. Перезагрузите страницу.")
await websocket.close()
return

clients[websocket] = nickname
await broadcast(f"{nickname} присоединился к чату.")

try:
async for message in websocket:
await broadcast(f"{nickname}: {message}")
except websockets.exceptions.ConnectionClosed:
pass
finally:
if websocket in clients:
await broadcast(f"{nickname} покинул чат.")
del clients[websocket]
except Exception as e:
print(f"Ошибка: {e}")

async def broadcast(message):
to_remove = []
for ws in clients:
try:
await ws.send(message)
except:
to_remove.append(ws)
for ws in to_remove:
if ws in clients:
del clients[ws]

async def main():
async with websockets.serve(handler, "localhost", 8765):
print("Сервер запущен на ws://localhost:8765")
await asyncio.Future() # Бесконечное ожидание

if __name__ == "__main__":
asyncio.run(main())
Loading