elseif ( rcode == 0 ) // timeout , pas de connexion
{
printf("le serveur n'est pas là\n" );
}
else
{
printf("select a échoué\n" );
}
}
else
{
printf("connect a échoué\n" );
}
}
r = fcntl (mysocket, F_SETFL, flags & ~O_NONBLOCK);
close( mysocket);
}
return 0;
}
normalement, le select ne devrait pas renvoyer 1 mais 0.
Le comportement sous windows est différent : on n'utilise pas fcntl mais ioctl pour rendre non bloquant, et le select renvoie bien 1 mais il faut tester fd_connect_err qui signifie qu'il y a bien une erreur s'il est positionné.
Marsh Posté le 14-05-2012 à 09:11:16
Bonjour ,
Je tente de rendre un connect non bloquant, le but étant de ne pas bloquer 30 sec lorsqu'on tente de se connecter sur une machine qui n'existe pas.
J'ai donc utilisé du code trouvé sur internet, qui fonctionne sous windows, mais pas sous linux.
Voici le code linux :
normalement, le select ne devrait pas renvoyer 1 mais 0.
Le comportement sous windows est différent : on n'utilise pas fcntl mais ioctl pour rendre non bloquant, et le select renvoie bien 1 mais il faut tester fd_connect_err qui signifie qu'il y a bien une erreur s'il est positionné.
Où ai-je pu faire une erreur ?
Merci