Sobes.tech
Junior

O que é um socket?

sobes.tech IA

Resposta da IA

Um socket (socket) é uma interface de programação (API) para interação de rede entre processos. Ele fornece uma abstração para trabalhar com protocolos de rede, como TCP e UDP, permitindo que os programas enviem e recebam dados através da rede.

Representa um ponto final para a troca de informações. Com os sockets, por exemplo, um servidor web pode aceitar pedidos de navegadores, e uma aplicação cliente pode enviar dados ao servidor.

Os sockets podem ser de dois tipos principais:

  • De fluxo (Stream sockets, SOCK_STREAM): Utilizam o protocolo TCP, garantindo uma entrega confiável e ordenada de dados. São adequados para aplicações que requerem garantias de entrega, como HTTP ou FTP.
  • De datagramas (Datagram sockets, SOCK_DGRAM): Utilizam o protocolo UDP, não garantindo a entrega nem a ordem dos pacotes. São usados onde a velocidade é importante, como em jogos online ou streaming de vídeo.

As principais etapas para trabalhar com sockets numa aplicação de rede (exemplo para TCP):

  1. Criação do socket: Chamada a socket() para obter um descritor de socket.
  2. Vinculação (Bind): Vincular o socket a um endereço IP e porta específicos na máquina local (para o socket do servidor).
  3. Escuta (Listen): Colocar o socket do servidor em modo de escuta de conexões entrantes.
  4. Aceitar (Accept): Aceitar uma conexão entrante do cliente, criando um novo socket para essa conexão.
  5. Estabelecimento de conexão (Connect): Conectar o cliente ao servidor via IP e porta (para o socket do cliente).
  6. Envio/Recepção (Send/Receive): Trocar dados através da conexão estabelecida.
  7. Fechar (Close): Fechar o socket após terminar.

Exemplo de criação de um socket TCP em Python:

import socket

# Criar um socket TCP/IP
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Operações adicionais: bind(), listen(), accept() para o servidor
# ou connect() para o cliente, send(), recv(), close()