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