[prog C++]Client/Serveur

Fermé
stillfelil Messages postés 135 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 21 février 2009 - 17 déc. 2005 à 16:18
stillfelil Messages postés 135 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 21 février 2009 - 18 déc. 2005 à 08:55
Salut j'ai un problem avec la recuperation de l'ip du client
j'ai codé un programme Serveur en C++ Builder avec l'api win32
j'ai commencé par l'initialisation

WSADATA Wsa;
if(WSAStartup(MAKEWORD(1,1),&Wsa)!=0)
return 0;

int sk = socket(AF_INET,SOCk_STREAm,0);

//initialisation de SOCKADDR_IN
SOCKADDR_IN addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
addr.sin_addr.S_un.S_addr = INADDR_ANY;

bind(sk,(SOCKADDR*)&addr,sizeof(addr));

listen(sk,1);

SOCKADDR_IN *addr_rem;
int remote = accepte(sk,(SOCKADDR*)&addr_rem,NULL);

//ET LA YA UN PROBLEM en recuperant l'ip du client

char* ip = inet_addr(addr_rem->sin_addr);
//et la j'obtien la chaine "0.0.0.0"

alors si quelq'un connait le probleme ou une autre maniere ce serait sympa
;-)

2 réponses

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
17 déc. 2005 à 17:52
Salut,
Pour moi, il y a un problème sur cette ligne
int remote = accepte(sk,(SOCKADDR*)&addr_rem,NULL);

Le dernier argument dans l'appel sert à passer la taille la structure pointée par
le second argument (paramètre en entrée/sortie). Mais je connais pas l'API
windows. Perso j'écrirai ça :
int len = sizeof( SOCKADDR ) ;
int remote = accept( sk, (SOCKADDR*)&addr_rem, &len ) ;

A+, crabs
0
stillfelil Messages postés 135 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 21 février 2009 38
18 déc. 2005 à 08:55
oui je sais jai pas voulu recupéré la taille de la stucture

et une petite rectification au lieu de la fonction inet_addr il faut mettre inet_ntoa mais dans mon code je lé mi, en tous cas ca ne change rien au probleme j'arrive pas a récupéré mon addr_rem ca valeur est null
et comme tu disé c'est au niveau du accepte que ca se passe
0