Serveur echo udp pour linux

Description

Exemple de serveur UDP sous Linux. Il reçoit un message par un client et le renvoit.

Source / Exemple :


/********************************************/
/*			Serveur echo en UDP				*/
/* auteur: STB2680							*/
/* date: 13/10/2003							*/
/* objet: creation d'un serveur qui attend	*/
/*	qu'on s'y connecte et qui renvoie la 	*/
/*	reçue pour que le client l'affiche.		*/
/********************************************/
#include "library.h"

/************/
/*	Main	*/
/************/
int main (int argc, char **argv)
{
	struct sockaddr_in server,client;
	struct hostent *hp;
	char buf[MAXBUF];
	int buf_len, sk,n_sent,n_read,i,client_ln;

	if (argc != 1) {
		printf("Usage: %s \n",argv[0]);
		exit(0);
	}

/* creation d'un socket

  • IP protocol family(PF_INET)
  • UDP (SOCK_DGRAM)
  • /
if( (sk=socket(PF_INET,SOCK_DGRAM,0)) < 0 ) { printf("Erreur de creation de socket !!!\n"); exit(1); } server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; /* etabli le numero du port du serveur */ server.sin_port = htons(PORT); /* attribution de l'adresse du serveur au socket */ if ( (i = bind(sk,(struct sockaddr *)&server, sizeof(server))) < 0 ) { perror ("Erreur de bind sur le socket"); exit(3); } /* boucle principale */ while(1) { for (i=0;i<MAXBUF;i++) buf[i] = '\0'; /* on attend une demande du client */ client_ln = sizeof(client); n_read = recvfrom(sk,buf,MAXBUF,0,(struct sockaddr *)&client,&client_ln); if(n_read < 0) { perror("Probleme de reception"); exit(4); } printf("Recu %d bytes: %s \n",n_read,buf); /* maintenant, on envoie au client un paquet contenant le messsage */ n_sent = sendto(sk,buf,sizeof(buf),0,(struct sockaddr *)&client,sizeof(client)); if(n_sent < 0) { perror("Probleme d'envoie de données"); exit(5); } } return(0); }

Conclusion :


Library.h est dqns le zip.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.