Serveur echo udp pour linux

Soyez le premier à donner votre avis sur cette source.

Vue 17 726 fois - Téléchargée 872 fois

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

Ajouter un commentaire Commentaires
stb2680 Messages postés 9 Date d'inscription samedi 4 octobre 2003 Statut Membre Dernière intervention 10 mars 2011
9 nov. 2004 à 11:55
Ben dsl, mais perso, la prog sous Windows, c'est pas trop mon truc, et en plus, là tu risque de t'exposer vachement (prb de securité ...).

Essaye de voir avec le C# s'il n'y a pas des choses comme çà qui existe.

Bon courrage !
CptLuthor Messages postés 25 Date d'inscription dimanche 7 novembre 2004 Statut Membre Dernière intervention 9 décembre 2004
8 nov. 2004 à 15:54
salut
Moi je voudrai réaliser un client et un server VPN le plus simple possible, c a d je lance le server (un .exe tout petit) , mes pots lancent chacun le client ( un .exe tout petit ) et hop on est connecté à distance et on se voit sur le réseau.

je précise je ne ve pas de service de messagerie, c a d je ve juste quon se voi en reseau comme ca on se voit dans les jeux comme si on été en reseau local.

voila merci à ce qui pourront maider
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
30 oct. 2003 à 15:27
ok merci !
stb2680 Messages postés 9 Date d'inscription samedi 4 octobre 2003 Statut Membre Dernière intervention 10 mars 2011
30 oct. 2003 à 09:48
Salut,
alors PF c'est pour une famille de protocole. Par contre, AF il me semble que c'est pour une famille d'adresse, mais j'en suis pas sûr.

Je ne sais pas si c'est spécifique à Linux car je ne connais pas Windows. Mais c'est pas d'une importance capitale, je pense que tu doit pouvoir mettre PF de partout et que çà marche quand meme.

Voilà, si t'as d'autre questions n'hésite pas.
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
28 oct. 2003 à 22:12
Salut,
j'aurai une question:
Qu'est ce que PF_INET ?
Tu crée un socket PF_INET, que tu bind avec une struct AF_INET (?).
Je comprend pas, c'est un truc spécifique a linux ?
Merci.

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.