Entendendo os Fundamentos de Sockets e Criando Seu Primeiro Socket
Vamos começar entendendo o que são sockets e como eles funcionam em Python. Em seguida, criaremos nosso primeiro socket para ver como ele é inicializado.
O que são Sockets Python?
Sockets são pontos finais para enviar e receber dados através de uma rede. Eles fornecem uma interface de programação para comunicação em rede, permitindo que aplicações troquem informações, independentemente de sua localização.
Na programação de rede, normalmente usamos um modelo cliente-servidor:
- O servidor espera por conexões de entrada e processa requisições
- O cliente inicia a comunicação conectando-se ao servidor
O módulo socket embutido do Python facilita o trabalho com sockets sem a necessidade de entender todos os detalhes complexos dos protocolos de rede.
Tipos de Socket
Os dois tipos de socket mais comuns são:
- TCP (Transmission Control Protocol): Fornece entrega de dados confiável e ordenada
- UDP (User Datagram Protocol): Fornece transmissão de dados mais rápida, mas não confiável
Para este laboratório, focaremos em sockets TCP, que são o tipo mais comumente usado para aplicações que exigem comunicação confiável.
Criando Seu Primeiro Socket
Vamos criar um script Python simples para inicializar um socket. Abra o WebIDE e siga estes passos:
- Primeiro, vamos criar um diretório para nosso projeto de programação de sockets:
mkdir -p ~/project/socket_lab
cd ~/project/socket_lab
- Agora, crie um novo arquivo Python chamado
socket_basics.py:
No WebIDE, clique no botão "New File" ou use o menu "File" e selecione "New File", então nomeie-o socket_basics.py dentro do diretório socket_lab.
- Adicione o seguinte código para demonstrar como criar um socket:
import socket
## Creating a socket
print("Creating a new socket...")
my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print(f"Socket created: {my_socket}")
## Explaining the parameters:
print("\nSocket parameters explained:")
print("AF_INET: Using IPv4 addressing")
print("SOCK_STREAM: Using TCP protocol for reliable data transmission")
## Getting available socket methods
print("\nSome methods available on socket objects:")
methods = [method for method in dir(my_socket) if not method.startswith('_')]
print(', '.join(methods[:10]) + '...') ## Showing first 10 methods
## Closing the socket
my_socket.close()
print("\nSocket closed")
-
Salve o arquivo.
-
Execute o script para ver a saída:
python3 ~/project/socket_lab/socket_basics.py
Você deve ver uma saída semelhante a esta:
Creating a new socket...
Socket created: <socket.socket fd=3, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('0.0.0.0', 0)>
Socket parameters explained:
AF_INET: Using IPv4 addressing
SOCK_STREAM: Using TCP protocol for reliable data transmission
Some methods available on socket objects:
accept, bind, close, connect, connect_ex, detach, fileno, getpeername, getsockname, getsockopt...
Socket closed
Esta saída mostra que criamos com sucesso um objeto socket e exploramos algumas de suas propriedades. Nas próximas seções, usaremos sockets para construir uma aplicação servidor e cliente que podem se comunicar entre si.
Funções Chave de Socket
Antes de prosseguir, vamos entender algumas funções chave de socket que usaremos:
socket() - Cria um novo objeto socket
bind() - Associa o socket a uma interface de rede e porta específicas
listen() - Permite que o servidor aceite conexões
accept() - Aceita uma conexão de um cliente
connect() - Conecta-se a um endereço remoto
send() - Envia dados para um socket conectado
recv() - Recebe dados de um socket conectado
close() - Fecha o socket
No próximo passo, criaremos um servidor usando essas funções.