✅ 1. Cliente e servidor TCP simples (chat 1:1)
📌 Um lado envia e o outro recebe mensagens (como um mini netcat).
Usa: socket(), bind(), listen(), accept(), connect(), send(), recv().
Dá pra testar em localhost.
💡 Extra: Adiciona múltiplos clientes usando fork() ou select() depois.
✅ 2. Cliente e servidor UDP (ping simples)
📌 Envia um pacote e espera a resposta.
Bom pra entender a diferença entre TCP e UDP (sem conexão, sem garantia de entrega).
Pode simular perda de pacotes e retransmissões.
✅ 3. Sniffer de pacotes (tipo mini Wireshark)
📌 Usa raw sockets pra capturar tráfego de rede.
Pode filtrar pacotes TCP, UDP, ICMP e exibir cabeçalhos.
Permite entender como os protocolos são estruturados (camada 3 e 4).
✅ 4. Port scanner simples (tipo mini Nmap)
📌 Tenta conectar em várias portas de um IP e diz quais estão abertas.
Usa: connect() com timeout em portas TCP.
Pode fazer versão TCP ou até UDP.
✅ 5. Servidor HTTP básico (mini Apache)
📌 Um servidor que responde a requisições HTTP simples (GET /).
Dá pra servir arquivos .html e imagens.
Aprende a trabalhar com strings, cabeçalhos HTTP, e parsing de requisições.
✅ 6. Ferramenta de download (tipo mini wget)
📌 Dá uma URL e ele conecta, faz o GET e salva o conteúdo.
Aprende a parsear URLs, resolver DNS (getaddrinfo()), lidar com protocolo HTTP.
✅ 7. Ferramenta de transferência de arquivos entre dois PCs
📌 Cliente envia um arquivo, servidor salva no disco.
Usa TCP e fread/fwrite pra manipular arquivos.
Ideal pra treinar envio em blocos, confirmação, e controle de erros.
Last updated