socket

AF_INET

socket.AF_INET

IPv4 протокол

AF_UNIX

socket.AF_UNIX

Юниксовый сокет

AF_INET6

socket.AF_INET6

IPv6 протокол

SOCK_DGRAM

socket.SOCK_DGRAM

UDP протокол

SOCK_STREAM

socket.SOCK_STREAM

TCP протокол

SOL_SOCKET

socket.SOL_SOCKET

SO_DROADCAST

socket.SO_DROADCAST

SO_REUSEADDR

socket.SO_REUSEADDR

socket()

class socket.socket

Сокет соединение

# ipv4 udp
sock = socket(AF_INET, SOCK_DGRAM)

# unix socket
sock = socket(AF_UNIX, SOCK_DGRAM)

with socket.socket(AF_INET, SOCK_DGRAM) as sock:

    sock.bind(('127.0.0.1', 8888))

    while True:
        sock.bind()

# ipv4 tcp
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
accept()

Ожидает клиентов и возвращает кортеж данных по подключенным клиентам

client, addr = sock.accept()
# client - socket
# addr - ('127.0.0.1', 63333)
bind(bind_param)

Привязываемся к указанному хосту

sock.bind(('127.0.0.1', 8888))
sock.bind('unix.sock')
close()

Закрывает соединени

sock.close()
connect()

Подсоединяется к серверу

sock.connect(('127.0.0.1', 8888))
sock.connect('unix.sock')
listen(count)

Устанавливает размер очереди обработки

sock.listen(5)
recv(size)

Блокирует интерпретатор, ожидая данные от клиента

result = sock.recv(1024)
# b'message'
sendall(bytes)
socket.sendall(b'GET / HTTP/1.0\r\nHost: www.ilnurgi.ru\r\n\r\n')
sendTo(message, host)

Отправляет сообщение по хосту

sock.sendTo(b'message', ('127.0.0.1', 8888))
sock.sendTo(b'message', 'unix.sock')
setblocking(block=True)

Включает/выключает блокирующий режим

sock.setblocking(True)
setsockopt()
sock.setsockopt(SOL_SOCKET, SO_DROADCAST, 1)

sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
settimeout(timeout)

Устанавливает таймаут для подключений

sock.settimeout(5)
"""
работа с блютуз
"""

import socket

address, services = socket.bt_obex_discover()

print(address, services)
# 00:12:d2:41:35:e4 {"OBEX Object Push":9}

MY_PC = "00:12:d2:41:35:e4"
address, services = socket.bt_obex_discover(MY_PC)
"""
отправка фотографии по БТ
"""

photo_path = 'photo.jpg'

address, services = socket.bt_obex_discover()

if u'OBEX Object Push' in services:
    channel = services[u'OBEX Object Push']
    socket.bt_obex_send_file(address, channel, photo_path)
"""
простой http server
"""

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 9004))
server_socket.listen()
while True:
    client_connection, client_address = server_socket.accept()
    request = client_connection.recv(1024)
    print(request)

    client_connection.sendall(b"HTTP/1.1 200 OK\n\nHello!")
    client_connection.close()
"""
wsgi реализация
"""

client_connection, client_address = server_socket.accept()
request = client_connection.recv(1024)
response = application(request)
client_connection.sendall(response)
client_connection.close()