Servidor em C via UDP
Publicado por Rafael 20/06/2007
[ Hits: 12.493 ]
Homepage: nenhum
Um servidor em C que utiliza o protocolo UDP, recebe e envia mensagens...
Olhe também o cliente! De novo a tentativa é ser o mais didático possível.
Logo, este é um exemplo também bem simples e comentado.
Para compilar: gcc servidor.c -o S
#include <stdio.h>
#include <sys/socket.h>
#include <netdb.h>
#include <string.h>
void esvazia(char vetor[],int tam){
int i;
for(i=0;i<tam;i++){
vetor[i]='{FONTE}';
}
}
int main(){
struct sockaddr_in cliente, servidor;
int tam_cliente, meuSocket,enviei=0;
// MTU padrão pela IETF
char buffer[576];
meuSocket=socket(PF_INET,SOCK_DGRAM,0);
servidor.sin_family=AF_INET;
servidor.sin_port=htons(20000);
servidor.sin_addr.s_addr=htonl(INADDR_ANY);
esvazia(buffer,576);
bind(meuSocket,(struct sockaddr*)&servidor,sizeof(struct sockaddr_in));
while(1){
printf("*** Servidor de Mensagens ***\n");
tam_cliente=sizeof(struct sockaddr_in);
recvfrom(meuSocket,buffer,576,MSG_WAITALL,(struct sockaddr*)&cliente,&tam_cliente);
printf("Recebi:%s de <endereço:%s> <porta:%d>\n",buffer,inet_ntoa(cliente.sin_addr),ntohs(cliente.sin_port));
int enviei=sendto(meuSocket,"ACK!",strlen("ACK!"),0,(struct sockaddr*)&cliente,sizeof(struct sockaddr_in));
if (enviei>=0)
printf("Envio de ACK!\n");
else{
error("sendto");
printf("Envio de falhou!\n");
}
esvazia(buffer,576);
}
close(meuSocket);
}
Robo HTTP usando socket e código multiplataforma
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Consertando o áudio com estalos e interrupções no Pipewire
Como implementar Raid (0, 1, 5, 6, 10 e 50)
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
REDE WI-FI NÃO APARECE NO LINUX MINT (0)
Como programar um sistema de controle para distribuições linux em c? (5)
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... (2)









