Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

Programação de Rede em Python: Sockets e Protocolos Avançados

Python oferece dois níveis de acesso a serviços de rede: baixo nível (sockets do SO) para protocolos orientados a conexão (TCP) e sem conexão (UDP), e alto nível (bibliotecas como ftplib, urllib) para protocolos de aplicação (FTP, HTTP, etc.).

O que são Sockets?

Sockets são pontos finais de um canal de comunicação bidirecional. Podem comunicar entre processos na mesma máquina ou em continentes diferentes. Implementados sobre diversos tipos de canal: Unix domain, TCP, UDP, etc.

Vocabulário de Sockets

TermoDescrição
DomínioFamília de protocolos (ex.: AF_INET, AF_UNIX).
TipoSOCK_STREAM (TCP) ou SOCK_DGRAM (UDP).
ProtocoloGeralmente 0; variante dentro do domínio/tipo.
HostnameIdentificador da interface: nome, IP, <broadcast>, string vazia (INADDR_ANY) ou inteiro.
PortaNúmero da porta, string com número ou nome do serviço.

Módulo socket

Criação de socket:

s = socket.socket(socket_family, socket_type, protocol=0)

Métodos do Socket Servidor

MétodoDescrição
s.bind((host, porta))Associa endereço (host, porta) ao socket.
s.listen(fila)Inicia listener TCP com tamanho de fila.
s.accept()Aceita conexão TCP cliente (bloqueante).

Métodos do Socket Cliente

MétodoDescrição
s.connect((host, porta))Inicia conexão TCP ativa.

Métodos Gerais

MétodoDescrição
s.recv(bufsize)Recebe mensagem TCP.
s.send(bytes)Transmite mensagem TCP.
s.recvfrom(bufsize)Recebe mensagem UDP.
s.sendto(bytes, endereco)Transmite mensagem UDP.
s.close()Fecha o socket.
socket.gethostname()Retorna nome do host local.

Servidor Simples

#!/usr/bin/python
import socket

s = socket.socket()
host = socket.gethostname()
porta = 12345
s.bind((host, porta))
s.listen(5)

while True:
    conn, addr = s.accept()
    print('Conexão de', addr)
    conn.send(b'Obrigado por conectar')
    conn.close()

Cliente Simples

#!/usr/bin/python
import socket

s = socket.socket()
host = socket.gethostname()
porta = 12345
s.connect((host, porta))
print(s.recv(1024).decode())
s.close()

Execute o servidor em background (python servidor.py &) e depois o cliente.

Módulos de Internet de Alto Nível

ProtocoloFunção ComumPortaMódulo Python
HTTPPáginas web80http.client, urllib, xmlrpc.client
NNTPNotícias Usenet119nntplib
FTPTransferência de arquivos20/21ftplib, urllib
SMTPEnvio de e-mail25smtplib
POP3Recebimento de e-mail110poplib
IMAP4Recebimento de e-mail143imaplib
TelnetLinhas de comando23telnetlib
GopherTransferência de documentos70gopherlib, urllib

Para aprofundamento, consulte Unix Socket Programming e a documentação da Python Socket Library.

python

  1. Dominando Tipos de Dados em Python: Guia Prático
  2. Dominando Operadores em Python: Guia Completo
  3. Dominando a Declaração Pass em Python: Guia Prático
  4. Dominando Argumentos de Funções em Python: Parâmetros Posicionais, Nomeados e Padrão
  5. Dominando Dicionários em Python: Criação, Manipulação e Técnicas Avançadas
  6. Dominando Programação Orientada a Objetos em Python: Classes, Herança, Encapsulamento e Polimorfismo
  7. Dominando Iteradores em Python: Como Funcionam e Como Criar os Seus
  8. Closures em Python Explicados: Como Funções Aninhadas Capturam Variáveis
  9. Dominando datetime do Python: Guia Prático de Datas, Horários e Fusos Horários
  10. Dominando time.sleep() do Python: Boas Práticas, Multithreading e Exemplos Reais