Ip du client connecté sur le serveur [Résolu]

Signaler
Messages postés
415
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2005
-
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
-
Coucou, je voulais savoir comment on fesait pour afficher les renseignements du client connecté sur le serveur. J'ai essayé la fonction getpeername() mais je ne sais pas comment ça marche, et MSND ne m'aide pas vraiment. Donc si qqu connai l'astuce !
merci

13 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
Dans la structure sockaddr_in: sin_port c'est le port, et sin_addr c'est l'ip du client, que tu peux afficher avec inet_ntoa()
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
Pour avoir l'adresse du client il faut passer une structure sockaddr_in vide en 2eme param a accept(...). Une fois que le client est connecté la structure contient l'adresse du client.
Messages postés
415
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2005
3
oui ça je savais, mais c'est quelle variables que j'affiche après ?
Messages postés
415
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2005
3
encore une fois merci aardman de ton aide si précieuse !
Messages postés
415
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2005
3
au fait pour afficher le port y a une fonction spécial ? parce que quand je fais : printf("%i",sinclient.sin_port); et ça ne marche pas
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
Ah oui il doit falloir convertir le port avec ntohs(...) car les bytes ne sont pas dans le bon ordre (a verifier..).
Sinon le port est un unsigned, donc ca s'affiche avec %u.
Messages postés
415
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2005
3
j'ai fait printf("%u",ntohs(sinclient.sin_port));
et ça m'affiche à peu près n'importe quoi
Messages postés
163
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
3 février 2012

Salut,

Ne t'attend pas a voir le port du serveur qui s'affiche mais le port du client qui pt etre n'importe quoi

Sinon aardman a raison il ne faut pas oublier d'appeler la fonction ntohs

Merci. ++ Nexus

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Pourriez-vous mettre un bout de code pour avoir l'adresse IP de la personne qui se connecte, parce que chez moi ça fonctionne pas.

YOYO, @+.
YOYO
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
yoyo269: la reponse est juste dans les posts du dessus..
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
J'ai trouvé maintenant mais tout n'est pas dans les posts précédents.
Donc voilà un bout de code :

SOCKET TempW_Serveur, W_Serveur;
SOCKADDR_IN Distant;
int Taille = sizeof(Distant);
TempW_Serveur = accept(W_Serveur, (SOCKADDR *) &Distant, &Taille);
MessageBox(NULL, inet_ntoa(Distant.sin_addr), "Adresse du contact qui vient de se connecter", 0);

J'espère que ça en aidera qq'uns qui comme moi on galéré qq tps pour trois fois rien.

YOYO, @+.
YOYO
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
Pas mal ce code, c'est exactement ce qui a été dis plus haut mais bon.
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Aardman je t'explique pourquoi j'ai mis le code.
C'est à cause de cette ligne :

int Taille = sizeof(Distant);

Elle peut paraître anodine mais visiblement elle est essentielle, parce que c'est à cause de ça que ça ne fonctionnait pas chez moi.
Je mettais NULL dans le dernier argument de accept(...).
Et comme j'ai galéré juste à cause de ça, j'ai préféré précisé pour être plus clair, comme vous n'en aviez pas parlé précédemment (du 3ème argument de accept(...)).
Voilà , c'était juste pour ça.

YOYO, @+.
YOYO