Клиент-серверное приложение на Python


Чтобы написать клиент-серверное приложение для локальной сети, вам нужно выбрать язык программирования (например, Python, Java, C#), создать сервер, который "слушает" входящие соединения, и клиенты, которые к нему подключаются, обмениваясь данными через сокеты, используя IP-адрес и порт сервера для связи. Процесс включает написание логики для сервера (обработка запросов, отправка ответов) и клиента (отправка запросов, получение данных), а также создание пользовательского интерфейса для обоих. 

Основные шаги:

Выбор языка и библиотеки:

Python: Библиотека socket (для простоты), asyncio (для асинхронности).
Java: Пакет java.net (Sockets, ServerSocket).
C# (.NET): System.Net.Sockets (TcpListener, TcpClient).
C++: WinSock (Windows) или POSIX Sockets (Linux/macOS).

Создание сервера (Серверная часть):

Инициализация: Создать ServerSocket (или аналог), привязать его к IP-адресу (обычно 0.0.0.0 для всех интерфейсов в LAN) и порту (например, 8080).
Ожидание подключений: Запустить цикл listen(), чтобы ожидать запросов от клиентов.
Обработка подключений: При подключении нового клиента, создать новый сокет для этого клиента.
Обработка данных: Читать данные, отправленные клиентом (receiveText()), обрабатывать их и отправлять ответ (sendText()).
Многопоточность: Для обслуживания нескольких клиентов одновременно, каждому клиенту обычно выделяется отдельный поток.

Создание клиента (Клиентская часть):

Инициализация: Создать Socket, указав IP-адрес и порт сервера.
Подключение: Установить соединение с сервером (connect()).
Отправка данных: Отправлять запросы/сообщения на сервер (sendText()).
Получение данных: Получать ответы от сервера, читая данные из сокета.
Интерфейс: Разработать графический интерфейс (GUI) для ввода данных и отображения информации.

Локальная сеть (LAN):

Для локальной сети IP-адрес сервера будет локальным (например, 192.168.1.10 или 127.0.0.1, если клиент и сервер на одном ПК), а порт — любым свободным. 

# Сервер
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0', 8080))
server_socket.listen(5)
conn, addr = server_socket.accept() # Ожидание подключения
data = conn.recv(1024) # Получение данных
conn.sendall(b'Hello from server') # Отправка ответа
conn.close()

# Клиент
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('192.168.1.10', 8080)) # Адрес сервера
client_socket.sendall(b'Hello from client') # Отправка запроса
data = client_socket.recv(1024) # Получение ответа
print(data.decode())
client_socket.close()
Используйте соответствующие библиотеки и классы для вашей среды разработки (например, {Link: C++ Builder https://habr.com/ru/articles/259641/} для C++), но общая логика сокетов остается одинаковой.

Источники информации для написания клиент-серверного приложения на Python:

Базы данных в Python

Базы данных в Python — это возможность хранить и управлять данными, используя различные СУБД (SQL, NoSQL) через встроенные библиотеки (например, sqlite3) или ORM-фреймворки (SQLAlchemy). SQLite — отличный старт для простых приложений, а для веб-разработки популярны PostgreSQL и MySQL; также доступны NoSQL-базы вроде MongoDB и быстрые key-value хранилища типа Redis. Основной подход: подключение, курсор, выполнение SQL-запроса (CREATE, INSERT, SELECT, UPDATE, DELETE) и коммит изменений. 

Типы баз данных и как с ними работать

1) SQLite (встроенная)
Что это: Легкая, не требует сервера, хранится в одном файле.
Как использовать: Встроенная библиотека sqlite3.
Пример кода:
import sqlite3
conn = sqlite3.connect('my_database.db') # Подключение
cursor = conn.cursor() # Создание курсора
cursor.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)") # Создание таблицы
cursor.execute("INSERT INTO users (name) VALUES (?)", ('Alice',)) # Вставка данных
conn.commit() # Сохранение изменений
conn.close() # Закрытие соединения
``` [3, 7, 12].
2) PostgreSQL / MySQL (SQL-серверы)
Что это: Мощные реляционные СУБД для веб-приложений.
Как использовать: Через драйверы типа psycopg2 (для PostgreSQL) или mysql-connector-python, или через ORM.
3) SQLAlchemy (ORM)
Что это: Объектно-реляционное отображение, позволяет работать с БД как с объектами Python без написания чистого SQL.
Преимущества: Переносимость между разными СУБД (SQLite, MySQL, PostgreSQL), абстракция от SQL.
4) MongoDB (NoSQL)
Что это: Документ-ориентированная база данных, хранит данные в формате JSON-подобных документов (BSON).
Как использовать: Библиотека pymongo. 

Ключевые концепции

DB-API 2.0: Стандартный интерфейс Python для работы с базами данных, обеспечивающий схожий подход для разных СУБД.
Курсор: Объект для выполнения запросов к БД.
commit(): Обязательный метод для сохранения изменений после операций INSERT, UPDATE, DELETE.
SQL-инъекции: Уязвимость при небезопасном формировании запросов (используйте параметризованные запросы, как в INSERT INTO ... VALUES (?)). 

Выбор базы данных

Начать: SQLite (встроенная, без настроек).
Веб-приложения: PostgreSQL или MySQL (надежные, масштабируемые).
Анализ данных: Pandas + SQLite или PostgreSQL.
Высокая скорость / Кэширование: Redis (in-memory). 

Комментарии