Ip du client connecté sur le serveur

Résolu
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 - 15 nov. 2004 à 19:57
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 - 5 févr. 2005 à 16:15
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

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
15 nov. 2004 à 20:46
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()
3
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
15 nov. 2004 à 20:16
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.
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
15 nov. 2004 à 20:40
oui ça je savais, mais c'est quelle variables que j'affiche après ?
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
15 nov. 2004 à 21:00
encore une fois merci aardman de ton aide si précieuse !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
15 nov. 2004 à 21:31
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
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
15 nov. 2004 à 21:44
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.
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
15 nov. 2004 à 22:01
j'ai fait printf("%u",ntohs(sinclient.sin_port));
et ça m'affiche à peu près n'importe quoi
0
Steph115 Messages postés 163 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 3 février 2012
17 déc. 2004 à 15:03
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.
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
5 févr. 2005 à 13:34
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
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
5 févr. 2005 à 15:25
Salut,
yoyo269: la reponse est juste dans les posts du dessus..
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
5 févr. 2005 à 15:35
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
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
5 févr. 2005 à 15:44
Salut,
Pas mal ce code, c'est exactement ce qui a été dis plus haut mais bon.
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
5 févr. 2005 à 16:15
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
0
Rejoignez-nous