Ответ
Сокет (Socket) — это конечная точка для двустороннего обмена данными между процессами по сети. Он связывает IP-адрес хоста и номер порта, позволяя программам общаться по протоколам TCP или UDP.
Основные типы сокетов:
- Потоковые сокеты (SOCK_STREAM): Используют протокол TCP. Гарантируют надежную, упорядоченную доставку данных с предварительным установлением соединения.
- Дейтаграммные сокеты (SOCK_DGRAM): Используют протокол UDP. Отправляют данные без установки соединения, быстрее, но без гарантий доставки и порядка.
Простой пример TCP-клиента и сервера на Python:
server.py (Сервер)
import socket
# Создание TCP/IP сокета
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Привязка сокета к адресу и порту
server_socket.bind(('127.0.0.1', 65432))
# Начало прослушивания входящих соединений
server_socket.listen()
print("Сервер запущен и ожидает подключений...")
# Принятие соединения
connection, client_address = server_socket.accept()
with connection:
print(f'Подключен клиент: {client_address}')
# Получение данных от клиента
data = connection.recv(1024)
print(f'Получено: {data.decode()}')
# Отправка ответа
connection.sendall(b'Hello from server!')
client.py (Клиент)
import socket
# Создание сокета и подключение к серверу
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client_socket:
client_socket.connect(('127.0.0.1', 65432))
# Отправка данных
client_socket.sendall(b'Hello from client!')
# Получение ответа
data = client_socket.recv(1024)
print(f'Получен ответ: {data.decode()}')
Применение: онлайн-чаты, многопользовательские игры, стриминг, API реального времени.