Socket — это комбинация домена и порта, через которую клиент и сервер обмениваются данными.
В Python сокет можно использовать почти как файл: читать из него и записывать в него.
Он состоит из двух элементов: IP-адреса и порта. Когда сервер принимает соединение, он закрепляет за сокетом определённый порт.
Порт — это число в заголовках пакетов TCP и UDP, которое определяет, какому приложению на устройстве предназначен тот или иной IP-пакет.
**Основные функции и методы:**
☑️ .socket
☑️ .bind()
☑️ .listen()
☑️ .accept()
☑️ .connect()
☑️ .connect_ex()
☑️ .send()
☑️ .recv()
☑️ .close()
**Асинхронность в Python реализуется тремя способами:**
☑️ через колбэки
☑️ с помощью генераторов
☑️ с использованием async/await
**Пример кода 💾**
**```import socket
#domain:5000
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #IPv4, TCP
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)#для повторного использования того же порта
server_socket.bind(('localhiost', 5000))#к какому домену и порту привязываем
server_socket.listen()
def accept_connection(server_socket):
while True:
client_socket, addr = server_socker.accept() #читает подключения, возвращает кортеж(сокет и адрес)
print('Connect from', addr)
def send_message(client_socket):
while True:
request = client_socket.recv(4096) #сообщение от клиента, размер буфера
if not request: #условие для прерывания этого цикла
break
else:
response = 'Hello world\n'.encode() #кодируем строку в bites
client_socket.send(response)
client_socke.close()
if name == 'main':
accept_connection(server_socket)
```[PYTHON:TODAY]
Мир Кодов
В Python сокет можно использовать почти как файл: читать из него и записывать в него.
Он состоит из двух элементов: IP-адреса и порта. Когда сервер принимает соединение, он закрепляет за сокетом определённый порт.
Порт — это число в заголовках пакетов TCP и UDP, которое определяет, какому приложению на устройстве предназначен тот или иной IP-пакет.
**Основные функции и методы:**
☑️ .socket
☑️ .bind()
☑️ .listen()
☑️ .accept()
☑️ .connect()
☑️ .connect_ex()
☑️ .send()
☑️ .recv()
☑️ .close()
**Асинхронность в Python реализуется тремя способами:**
☑️ через колбэки
☑️ с помощью генераторов
☑️ с использованием async/await
**Пример кода 💾**
**```import socket
#domain:5000
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #IPv4, TCP
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)#для повторного использования того же порта
server_socket.bind(('localhiost', 5000))#к какому домену и порту привязываем
server_socket.listen()
def accept_connection(server_socket):
while True:
client_socket, addr = server_socker.accept() #читает подключения, возвращает кортеж(сокет и адрес)
print('Connect from', addr)
def send_message(client_socket):
while True:
request = client_socket.recv(4096) #сообщение от клиента, размер буфера
if not request: #условие для прерывания этого цикла
break
else:
response = 'Hello world\n'.encode() #кодируем строку в bites
client_socket.send(response)
client_socke.close()
if name == 'main':
accept_connection(server_socket)
```[PYTHON:TODAY]
Мир Кодов