- Головна
-
- Встановлення Python.
- Налаштування віртуального оточення
- Типи даних
- Математичні оператори
- Встроїні функції
- Бібліотеки Python
- Колекція List
- Кортежі Tuple
- Множини (Set)
- Рядки Str
- Список escape-символів
- Колекція Dictionary
- Множина frozenset
- Класи та об'єкти
- Винятки
- Пакетні менеджери
- Перевантаження операторів
- Робота з файлами та директоріями
- HttpClient
- HTTPServer
- Модуль socket
- Робота з пошту
- Багатопоточність
- Асинхронні методи
- Event Loop
- Обхід GIL
- Черга deque
- Масиви постійного розміру
-
- Webpack. Базове складання проекту
- GULP. SCSS. Налаштування оточення
- SCSS стилі особливості
- Шпаргалка SQL
- MySQL dump
- Git команди
- Розгорнути ssh git репозиторію на сервері
- Консольні команди
- Декілька версій PHP на сервері
- PHPStorm+xDebug+OpenServer
- PHPUnit + OpenServer
- Додати застосунок з Windows Store в автозавантаження
- Зовнішні посилання
Модуль socket
Створення сокет-сервера
import socket
# Створення сокета
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Прив'язка сокета до адреси і порта
server_socket.bind(('localhost', 12345))
# Прослуховування вхідних з'єднань
server_socket.listen(5)
print("Сервер очікує з'єднання...")
while True:
# Прийняття нового з'єднання
client_socket, client_address = server_socket.accept()
print(f"З'єднання встановлено з {client_address}")
# Отримання даних від клієнта
data = client_socket.recv(1024)
print(f"Отримано: {data.decode('utf-8')}")
# Відправка даних клієнту
client_socket.sendall(b'Hello, client!')
# Закриття з'єднання з клієнтом
client_socket.close()Тут socket.AF_INET вказує, що ми використовуємо IPv4 для мережевого протоколу, а socket.SOCK_STREAM означає, що ми використовуємо TCP. Ці параметри найчастіше використовуються для створення мережевих додатків.
Після того, як надійшло вхідне повідомлення, потрібно зробити ще чотири дії:
- Встановити (accept) з'єднання з клієнтом.
- Отримати (receive) запит (дані) від клієнта.
- Надіслати (send) клієнту відповідь — теж якісь дані.
- Закрити (close) з'єднання.
Метод sendall() використовується замість send(), тому що він гарантує, що всі дані будуть відправлені. Метод send() може відправити тільки частину даних, якщо буфер заповниться.
Число 1024 у recv(1024) вказує максимальну кількість байтів, яку можна отримати за один раз. Це допомагає контролювати обсяг даних, оброблюваних за одну операцію.
Створення сокет-клієнта
import socket
# Створення сокета
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Встановлення з'єднання з сервером
client_socket.connect(('localhost', 12345))
# Відправка даних на сервер
client_socket.sendall(b'Hello, server!')
# Отримання даних від сервера
data = client_socket.recv(1024)
print(f"Отримано від сервера: {data.decode('utf-8')}")
# Закриття сокета
client_socket.close()
2015-2026 © SumyNikNet