Socket getnameinfo

c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005 - 27 oct. 2004 à 10:59
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 27 oct. 2004 à 14:39
Bonjour à tous voilà mon pb:
dans le code si-dessous je récupère le nom du client connecté avec getnameinfo.
Lorsque je teste en mode debug pas de pb, getnameinfo fonctionne correctement mais, en mode release je n'ai + rien la chaine HostNameClient est vide.
Si qqun peu m'aider merci :) .

bool CSock::SocketAccept(CSock *aSock, char* NomClient)
{
char IpClient[100];
char HostNameClient[100];
HostNameClient[0]=0;

//Accept the connection ON this socket , and FROM the other socket.
int sinsize = sizeof(struct sockaddr_in);

aSock->Sock= accept(Sock, (struct sockaddr *)&aSock->sin, &sinsize);

//Watch if connection was correctly accepted
if(aSock->Sock == INVALID_SOCKET)
{
cout << "Accept failed : " << WSAGetLastError() << "\n";;
shutdown(Sock,SD_BOTH);
closesocket(Sock);
Sock = INVALID_SOCKET;
return false;
}

sprintf(IpClient,"%i.%i.%i.%i",aSock->sin.sin_addr.S_un.S_un_b.s_b1,aSock->sin.sin_addr.S_un.S_un_b.s_b2,aSock->sin.sin_addr.S_un.S_un_b.s_b3,aSock->sin.sin_addr.S_un.S_un_b.s_b4);
getnameinfo((sockaddr *)&aSock->sin, sizeof(sockaddr_in),HostNameClient,(strlen(HostNameClient) + 1), 0, 0, 0);
cout << "\nPreview demande par " << HostNameClient << " IP: " << IpClient << "" ;
sprintf(NomClient,HostNameClient);
return true;
}

9 réponses

c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
27 oct. 2004 à 12:01
g trouvé pkoi si ça interesse qqun voila :
getnameinfo((sockaddr *)&aSock->sin, sizeof(sockaddr_in),HostNameClient,(strlen(HostNameClient)-1 ), 0, 0, 0);

Cmill
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
27 oct. 2004 à 12:59
et un simple strlen, ca n'irait pas mieux ? Pasken faisant ton -1, tu bouffes le dernier caractere de la chaine, car strlen ne tient pas compte du zero final...
0
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
27 oct. 2004 à 13:29
je c bien mais quand je fais ça ........ ça marche +
Bizard non?
Cmill
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
27 oct. 2004 à 13:40
Salut,
Le 4eme param de getnameinfo est la taille du buffer que tu passes en 3eme param...
Utiliser strlen ici n'a aucun sens car HostNameClient ne contient surement pas une chaine valide
0

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

Posez votre question
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
27 oct. 2004 à 13:47
alors que dois je lui passer
Cmill
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
27 oct. 2004 à 13:50
sizeof(HostNameClient);
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
27 oct. 2004 à 13:56
Salut,
sizeof si c'est un tableau et pas un pointeur, sinon on peut aussi coder la valeur en dur.
0
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
27 oct. 2004 à 14:16
ok
merci c vrai que g pas chercher plus loin que le bout de nez sur ce coup. Mais bon on va mettre ça sur le dos de la fatigue......

Sinon, sur win2000 le getnameinfo me retourne bien le nom du pc client alors que sous xp il me donne l'ip. tu c pourquoi?

Cmill
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
27 oct. 2004 à 14:39
Salut,
Faut voir avec les flags (dernier param)
0
Rejoignez-nous