begin process at 2012 05 27 19:14:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > SERVEUR ECHO UDP POUR LINUX

SERVEUR ECHO UDP POUR LINUX


 Information sur la source

Note :
Aucune note
Catégorie :Réseaux & Internet Niveau :Débutant Date de création :25/10/2003 Vu / téléchargé :8 145 / 777

Auteur : stb2680

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

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

Source

  • /********************************************/
  • /* 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);
  • }
/********************************************/
/*			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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip SERVEUR ECHO UDP POUR LINUX AVEC UN FORK
Source avec Zip CLIENT ECHO UDP SOUS LINUX

 Sources de la même categorie

Source avec Zip Source avec une capture MINI SERVEUR HTTP [WINDOWS] par ganjarasta
Source avec Zip Source avec une capture CLIENT DE TEST MODBUS TCP par brunovan
Source avec Zip Source avec une capture SCANIP [ARP / ICMP] par ganjarasta
Source avec Zip Source avec une capture TRACEROUTE [WINPCAP] par ganjarasta
Source avec Zip SERVEUR MULTITHREAD [LINUX/WIN] par nipepsinicolas

Commentaires et avis

Commentaire de aardman le 28/10/2003 22:12:42

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.

Commentaire de stb2680 le 30/10/2003 09:48:47

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.

Commentaire de aardman le 30/10/2003 15:27:50

ok merci !

Commentaire de CptLuthor le 08/11/2004 15:54:01

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

Commentaire de stb2680 le 09/11/2004 11:55:31

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 !

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales