Client echo udp sous linux

Soyez le premier à donner votre avis sur cette source.

Vue 7 845 fois - Téléchargée 651 fois

Description

Exmple de client : envoie un message au serveur, attend une reponse et l'affiche.
Fonctionne avec le serveur egalement sur le site.

Source / Exemple :


/********************************************/
/*				Client echo en UDP			*/
/* auteur: STB2680							*/
/* date: 13/10/2003							*/
/* objet: creation d'un client qui se		*/
/*	connecte à un serveur passé en parametre*/
/*	lui passe une chaine, la recoit et 		*/
/*	l'affiche.								*/
/********************************************/
#include "library.h"	// contient tout ce qui faut

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

	if (argc != 2) {
		printf("Usage: %s <server name>\n",argv[0]);
//		printf("Usage: %s <server name> <port> avec 1024<port<65000\n",argv[0]);
//		printf("Ex: client_echo localhost 1200\n");
		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); } /* Pas besoin de faire appel au bind() car on est en UDP */ server.sin_family = AF_INET; if ( (hp=gethostbyname(argv[1])) == (struct hostent *) 0 ) { printf("Nom d'hote inconnu !!!\n"); exit(2); } /* on copie l'adresse IP dans la sockaddr */ memcpy( (char *) &server.sin_addr.s_addr,(char *) hp->h_addr,hp->h_length); /* etabli le numero du port du serveur */ server.sin_port = htons(PORT); /* On compose le message */ strcpy(buf,"Cest cool le reseau !!!!\n"); buf_len = strlen(buf); /* maintenant, on envoie au serveur un packet vide */ n_sent = sendto(sk,buf,buf_len,0,(struct sockaddr *)&server,sizeof(server)); if(n_sent < 0) { perror("Probleme d'envoie de données"); exit(3); } printf("On a bien envoye \n"); /* on efface le buffer pour ne pas confondre avec ce qui est envoyé */ for (i=0;i<MAXBUF;i++) buf[i] = '\0'; /* on attend une reponse du serveur */ n_read = recvfrom(sk,buf,MAXBUF,0,NULL,NULL); if(n_read < 0) { perror("Probleme de reception"); exit(4); } printf("Recu %d bytes: %s \n",n_read,buf); return(0); }

Conclusion :


library.h est dans 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.