Servidor em C via UDP
Publicado por Rafael 20/06/2007
[ Hits: 12.532 ]
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);
}
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
O que houve com slackware ??? (12)
Alterar conteúdo de dica [RESOLVIDO] (3)
Vou destruir sua infância:) (5)









