Rechercher : dans
Par :

[prog C++]Client/Serveur

Dernière réponse le 18 déc 2005 à 08:55:47 stillfelil, le 17 déc 2005 à 16:18:00 
 Signaler ce message aux modérateurs

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
;-)

Configuration: C++ Builder 5.0

Meilleures réponses pour « [prog C++]Client/Serveur » dans :
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
Environnement Client/Serveur VoirPrésentation de l'architecture d'un système client/serveur De nombreuses applications fonctionnent selon un environnement client/serveur, cela signifie que des machines clientes (des machines faisant partie du réseau) contactent un serveur, une...
Réseau d'égal à égal VoirPrésentation de l'architecture d'égal à égal Dans une architecture d'égal à égal (en anglais peer to peer), contrairement à une architecture de réseau de type client/serveur, il n'y a pas de serveur dédié. Ainsi chaque ordinateur dans un tel réseau...

1

crabs, le 17 déc 2005 à 17:52:42

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 ..., I think Slackware sounds better than 'Microsoft,'
-- Patrick Volkerding - founder and maintainer of Slackware

Répondre à crabs

2

 stillfelil, le 18 déc 2005 à 08:55:47

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

Répondre à stillfelil