python2day | Blogs

Telegram-канал python2day - [PYTHON:TODAY]

27146

Привет! — Делюсь опытом, пишу на Python и других языках — Создаю ботов и сайты — Парсинг, машинное обучение, big data, щупаю pentesting YouTube: https://www.youtube.com/c/pythontoday Чат: @python2day_chat Сотрудничество: @web_runner

Subscribe to a channel

[PYTHON:TODAY]

Socket — пара домен-порт через которые осуществляется взаимодействие между клиентом и сервером

С сокетом в Питоне можно работать, как с файлом — считывать его и получать данные.
Сокет содержит в себе два параметра: IP-адрес и порт. Сервер, принимая соединение присваивает своему сокету определенный порт.
Порт — число в заголовках пакетов TCP, UDP, указывающее, для какого приложения в системе предназначен данный IP-пакет.

Основные функции и методы:
☑️ .socket
☑️ .bind()
☑️ .listen()
☑️ .accept()
☑️ .connect()
☑️ .connect_ex()
☑️ .send()
☑️ .recv()
☑️ .close()

Асинхронный код можно писать 3 способами:
☑️ с помощью колбэков
☑️ с помощью генераторов
☑️ с помощью 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]

#doc #python #russian #code

Читать полностью…
Subscribe to a channel