- Aplique o IP do servidor, no arquivo
cliente.c, na linha onde é definido o endereço do servidor (linha 34), antes:
target.sin_addr.s_addr = inet_addr("127.0.0.1");depois:
target.sin_addr.s_addr = inet_addr("SEU_IP_DO_SERVIDOR");Subir Servidor:
gcc -o server Servidor.c
./serverSubir cliente:
gcc -o client Cliente.c
./clientAlterado o protocolo de transporte de TCP para UDP nas implementações do servidor e do cliente.
Alterações no servidor:
- Substituído SOCK_STREAM por SOCK_DGRAM para utilizar comunicação via datagramas.
- Removidas chamadas específicas de TCP: listen(), accept(), read() e write().
- Utilizadas as funções sendto() e recvfrom() para envio e recebimento de mensagens.
- Uso direto do socket original (
sock), já que UDP não requer um socket novo por conexão.
Alterações no cliente:
- Substituído SOCK_STREAM por SOCK_DGRAM.
- Removida a chamada connect(), pois UDP é sem conexão. -> UDP não exige nem permite a criação de uma "conexão" com o cliente — cada mensagem pode vir de um cliente diferente, e o servidor não mantém uma ligação persistente com nenhum deles.
- Substituídas as chamadas write() e read() por sendto() e recvfrom().
- Lógica original mantida sempre que possível para facilitar leitura e manutenção.
Iimprimir IP e porta do cliente atribuídos dinamicamente:
- Removido o uso de bind() manual com INADDR_ANY e porta 0.
- Adicionado o uso de connect() com o endereço do servidor UDP,
- permitindo que o sistema operacional defina o IP e porta de origem.
- Utilizado getsockname() após o connect() para capturar o IP e porta efetivamente utilizados na comunicação.
- Impressão do IP e porta do cliente logo após a criação do socket.