1. O que é programação Socket
- Significado literal de Socket
A palavra socket originalmente significa tomada. Uma tomada cria uma conexão entre dois pontos, então na programação de redes ela representa um ponto de extremidade para comunicação em rede. - Definição de programação Socket
Troca de dados entre múltiplos hospedeiros usando os protocolos de rede TCP / UDP. - Entendimento prático
Escrever programas para que dois ou mais computadores troquem dados entre si. Um exemplo comum é uma ferramenta de bate‑papo em rede local.
Analogia: tomada = interface de rede; plugue = outro hospedeiro; encaixar o plugue = estabelecer conexão de rede.
Para facilitar o aprendizado, vamos estudar com um exemplo prático de implementação.
2. Projeto de uma ferramenta de bate‑papo simples
Modelo de arquitetura: Cliente‑Servidor (C/S)
- Servidor (Server)
- Vincular‑se a uma porta local específica e manter‑se escutando requisições de rede
- Aguardar tentativas de conexão vindas de outros computadores
- Criar um canal de comunicação após detectar a conexão de um cliente
- Cliente (Client)
Enviar requisição de conexão informando o endereço IP e o número da porta do servidor - Objetivo da comunicação: Trocar mensagens de texto em tempo real entre dois computadores para implementar bate‑papo instantâneo
Fluxo de operação
- Servidor é iniciado → começa a escutar a porta
- Cliente é iniciado → conecta‑se ao IP e porta do servidor
- Com a conexão estabelecida, ambos os lados enviam e recebem mensagens
Abaixo um exemplo mínimo funcional
Servidor
// 1. Criar TcpListener para escutar IP e porta
TcpListener listener = new TcpListener(IPAddress.Any, 8899);
listener.Start();
// 2. Aguardar conexão do cliente
TcpClient client = await listener.AcceptTcpClientAsync();
// 3. Obter fluxo de rede para envio e recebimento de mensagens
NetworkStream stream = client.GetStream();
Code language: JavaScript (javascript)
Cliente
// Conectar ao IP e porta do servidor
TcpClient client = new TcpClient();
await client.ConnectAsync("192.168.1.100",8899);
NetworkStream stream = client.GetStream();Code language: JavaScript (javascript)
Visão geral