Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1656 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C - Newby] Communication par socket en UDP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C - Newby] Communication par socket en UDP

n°543062
dudul51
Posté le 19-10-2003 à 12:37:44  profilanswer
 

Voilà, étant grand débutant je veux réaliser un client/serveur UDP. Le client envoie des chaînes de caractères que le serveur affiche sur son terminal de contrôle (les 2 programmes tournent sur la même machine). Voilà le code que j'ai tapé pour le client :
 

Code :
  1. main()
  2. {
  3.   int sock;
  4.   struct sockaddr_in emet,dest; 
  5.   char buf[]="bonjour";
  6.   char rep[1500];
  7.   sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
  8.  
  9.   emet.sin_family=AF_INET;
  10.   emet.sin_port=htons(1500);
  11.   emet.sin_addr.s_addr=INADDR_ANY;
  12.   bind(sock,(struct sockaddr*)&emet,sizeof(emet));
  13.   sendto(sock,buf,sizeof(buf),0,(struct sockaddr*)&dest,sizeof(dest));
  14.   recvfrom(sock,(char*)rep,sizeof(rep),0,(struct sockaddr*)&dest,sizeof(dest));
  15.   for (int i=0;i<20;i++)
  16. printf("%x",rep[i]);
  17.   close(sock);
  18. }


 
et pour le serveur :

Code :
  1. main()
  2. {
  3.   int sock;
  4.   struct sockaddr_in emet,dest; 
  5.   char buf[]="bonjour";
  6.   char rep[1500];
  7.   sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
  8.  
  9.   emet.sin_family=AF_INET;
  10.   emet.sin_port=htons(1500);
  11.   emet.sin_addr.s_addr=INADDR_ANY;
  12.   bind(sock,(struct sockaddr*)&emet,sizeof(emet));
  13.   recvfrom(sock,(char*)rep,sizeof(rep),0,(struct sockaddr*) &dest,sizeof(dest));
  14.   for (int i=0;i<20;i++)
  15. printf("%x",rep[i]);
  16.  
  17. sendto(sock,buf,sizeof(buf),0,(struct sockaddr*)&dest,sizeof(dest));
  18.   close(sock);
  19. }


 
Avec ce code, et en lançant le serveur puis le client, le client envoie son message mais le serveur ne reçoit rien et bloque sur recvform(...).
 
Quelqu'un pourrait m'aider svp?

mood
Publicité
Posté le 19-10-2003 à 12:37:44  profilanswer
 

n°543117
gilou
Modérateur
Modzilla
Posté le 19-10-2003 à 15:01:42  profilanswer
 

Citation :

recvfrom(sock,(char*)rep,sizeof(rep),0,(struct sockaddr*) &dest,sizeof(dest) );


le parametre est par adresse: ssize_t recvfrom(int s, void *buf, size_t  len,  int  flags, struct sockaddr *from, int *fromlen);
donc:
len = sizeof(dest), et tu passes &len a l'appel.
A+,


Message édité par gilou le 19-10-2003 à 15:03:15

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°544252
dudul51
Posté le 19-10-2003 à 19:28:48  profilanswer
 

ça ne marche toujours pas

n°544333
Konar
Posté le 19-10-2003 à 20:53:03  profilanswer
 

testes les valeurs de retour des fonctions et trouve celle qui te renvoie une erreue

n°545831
dudul51
Posté le 21-10-2003 à 09:51:55  profilanswer
 

C bon ça marche : le client ne fait qu'un sendto et le serveur qu'un recvfrom; dans le client il faut aussi construire l'adresse de destination.

n°545833
gilou
Modérateur
Modzilla
Posté le 21-10-2003 à 09:54:35  profilanswer
 

Et ton pb venait d'ou alors??
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°546559
dudul51
Posté le 21-10-2003 à 22:07:17  profilanswer
 

en fait il faut aussi construire l'adresse de destination dans le client. En plus j'ai utilisé la fonction gethostbyname avec une structure hostent pour récupérer l'adresse du destinataire.
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C - Newby] Communication par socket en UDP

 

Sujets relatifs
reseaux et socket en c++Pb socket sur accept
classe socket std ?[Python] Communication avec un serveur (pop)
[Windows] Fonction socket : sendto(...)PHP, socket & telnet... se logger sur un serveur distant [SOLVED]
communication client/serveur avec python[java] association socket / BufferedtInputStream
Communication inter-processus[Réseaux] - comment connaitre le protocole encapsulé ds du TCP ou UDP
Plus de sujets relatifs à : [C - Newby] Communication par socket en UDP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR