[prog C++]Client/Serveur

stillfelil Messages postés 135 Date d'inscription   Statut Membre Dernière intervention   -  
stillfelil Messages postés 135 Date d'inscription   Statut Membre Dernière intervention   -
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
;-)
A voir également:

2 réponses

crabs Messages postés 908 Date d'inscription   Statut Membre Dernière intervention   507
 
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   Statut Membre Dernière intervention   38
 
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