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

  FORUM HardWare.fr
  Programmation
  C

  récuperer l'adresse IP d'un client avec recvfrom

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

récuperer l'adresse IP d'un client avec recvfrom

n°2039036
iviath
Posté le 29-11-2010 à 14:52:06  profilanswer
 

Bonjour tout le monde,
 
Je suis entrain de développer un serveur en C. Il récupère un messageenvoyé par un client en UDP, puis le traite et retourne le résultat généré.
 
Afin de pouvoir répondre au client, j'ai besoin de récupérer son adresse IP et son port d'écoute. Pour cela j'ai utilisé la fonction recvfrom, qui est sensé récupérer l'expéditeur et le contenu. Pourtant ma variable contenant l'adresse IP est toujours vide. Pourriez vous me dire se qui bloque?
 

Code :
  1. memset(&expediteur, 0, sizeof(sockaddr));
  2. recvfrom(socketFD, buffer[MAX_BUFFER], MAX_MSG_SIZE, MSG_DONTWAIT, &expediteur, &tailleFrame);


 
Je précise que je reçois bien le message dans le buffer, la taille de la trame également, mais que expéditeur reste à 0. :fou:  
 
Un peu, voir beaucoup d'aide serait la bienvenu.  :pt1cable:


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
mood
Publicité
Posté le 29-11-2010 à 14:52:06  profilanswer
 

n°2039064
olivthill
Posté le 29-11-2010 à 16:00:44  profilanswer
 

Que contient le dernier paramètre (en l'occurence &tailleFrame) ?
Il faut l'initialiser avec la taille de expediteur.
Donc essayer :

Code :
  1. static int expediteur_lg;
  2. ...
  3. expediteur_lg = sizeof(expediteur);
  4. recvfrom(socketFD, buffer[MAX_BUFFER], MAX_MSG_SIZE, MSG_DONTWAIT, &expediteur, &expediteur_lg);

n°2039076
iviath
Posté le 29-11-2010 à 16:20:15  profilanswer
 

Merci, maintenant l'adresse de l'expéditeur n'est pas vide, mais comment je la convertie pour récupérer l'adresse sous la forme 127.0.0.1 par exemple?

 


Message édité par iviath le 29-11-2010 à 16:20:25

---------------
En informatique, il n'y a pa de solution, que des problèmes :)
n°2039085
olivthill
Posté le 29-11-2010 à 16:43:47  profilanswer
 

Utiliser inet_ntop() ou InetNtop() ou WSAAddressToString() ou inet_ntoa(). Voir la doc.


Message édité par olivthill le 29-11-2010 à 16:44:04
n°2039096
iviath
Posté le 29-11-2010 à 17:00:50  profilanswer
 

j'ai testé avec inet_ntoa et ntohs mais ca me retourne 127.0.0.1 alors que j'ai paramétré ca en 192.168.1.1, je vais tester tes fonctions. Merci d'avance.


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
n°2039111
iviath
Posté le 29-11-2010 à 17:30:23  profilanswer
 

Tout cela semble marché. Merci beaucoup.


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
n°2039240
Taz
bisounours-codeur
Posté le 30-11-2010 à 11:56:14  profilanswer
 

Mieux vaut utiliser des interfaces indépendantes du protocole.
http://www.akkadia.org/drepper/userapi-ipv6.html
 
voire getnameinfo.

n°2039369
iviath
Posté le 01-12-2010 à 09:51:52  profilanswer
 

intéressant tout ca, je vais me plonger dedans. Merci


---------------
En informatique, il n'y a pa de solution, que des problèmes :)

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

  récuperer l'adresse IP d'un client avec recvfrom

 

Sujets relatifs
sélecteur Jquery : récupérer une valeur[chaine] Décomposition d'une adresse postal
Récupérer toutes les instances d'Excel[PHP] Créer un client ActiveSync
[Oracle] Récupérer des informations sur les clés étrangèresRécupérer l'objet a sur lequel on clique
Imprimer un texte sur imprimante via son IPrécupérer paramètre template int
Récupérer un tableau d'une autre page web[C++] Récupérer la taille d'un fichier binaire
Plus de sujets relatifs à : récuperer l'adresse IP d'un client avec recvfrom


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