-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtcp_socket_server_0_simple.py
More file actions
executable file
·41 lines (32 loc) · 1.87 KB
/
tcp_socket_server_0_simple.py
File metadata and controls
executable file
·41 lines (32 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env python3
"""Простой TCP-сервер"""
import socket
LISTEN_PORT = 12345
# Создаем сокет с использованием IPv4 (AF_INET) и TCP (SOCK_STREAM)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Разрешаем повторное использование порта
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# Привязываем сокет к адресу и порту
server_socket.bind(('localhost', LISTEN_PORT))
# Начинаем прослушивать входящие соединения (максимум 1 в очереди)
server_socket.listen(1)
print(f"Сервер ожидает подключение на порту {LISTEN_PORT}...")
# Принимаем соединение от клиента
conn, addr = server_socket.accept()
print(f"Подключение от {addr}")
# Получаем данные от клиента
data = conn.recv(1024)
print(f"Получено: {data.decode()}")
# Отправляем ответ клиенту
conn.sendall("Привет от сервера!".encode())
# Закрываем соединение
conn.close() # Закрываем соединение с клиентом
server_socket.close() # Закрываем серверный сокет
# Пояснение:
# - socket() создаёт новый TCP-сокет.
# - bind() привязывает сокет к локальному адресу и порту.
# - listen() переводит сокет в режим ожидания подключений.
# - accept() блокирует выполнение до тех пор, пока клиент не подключится.
# - recv() читает данные, отправленные клиентом.
# - sendall() отправляет данные клиенту.
# - close() закрывает соединение.