Problem de socket

nem02004 Messages postés 47 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 23 avril 2007 - 6 août 2005 à 15:08
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 6 août 2005 à 15:42
Salut: alors voila g une fonction que jappel sur demande, le problem est tel que lorse que je stipule un movais serveur (char *serv), mon programme bug, or les erreurs de serveur son tres fréquentes dans mon programme. je voudrais connaitre le moyen d'eviter ce bug qui ferme mon programme ( La function sarrete lors dun faux serveur ( a la ligne rouge ) ).

int connexion_tcp (char *serv)
{
SOCKADDR_IN SinDist;
int sock;
struct hostent *host;
sock = socket (AF_INET, SOCK_STREAM, 0);
SinDist.sin_family = AF_INET;
SinDist.sin_addr.s_addr = inet_addr (serv);
SinDist.sin_port = htons (6667);
if (SinDist.sin_addr.s_addr == -1)
{
host = gethostbyname (serv);
memcpy ((char *) &SinDist.sin_addr.s_addr, host->h_addr, host->h_length);
.............................BUG.SI.MAUVAIS.SERVEUR.............................
}
...
}

Merci de m'aider

1 réponse

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
6 août 2005 à 15:42
gethostbyname retourne un ptr null en cas d'erreur. Comme après tu fais une indirection sur le pointeur null, le plantage est obligatoire...

if(host = gethostbyname (serv))
{
// ok, serveur correct
memcpy ((char *) &SinDist.sin_addr.s_addr, host->h_addr, host->h_length);
}
0
Rejoignez-nous