Socket avec Time out sous windows [Résolu]

Messages postés
20
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
23 mars 2010
- - Dernière réponse : ghanmi04_05
Messages postés
20
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
23 mars 2010
- 2 sept. 2009 à 10:43
Bonjour,
J'ai un programme qui intercept les paquets sur une ip(de l'une de mes cartes réseaux) sous windows.
SOCKET sock;
    if((sock socket(AF_INET, SOCK_RAW, IPPROTO_IP)) INVALID_SOCKET)
    {
        printf("\n[!]Impossible de creer le socket.\n--- Erreur avec    socket() : %d\n\n", WSAGetLastError());
        system("pause");
        return 0;
    }

je voulais lorsque je reçois rien au bout de quelque seconde mon programme se ferme, j'ai ajouter un time out
 struct timeval tv;
     tv.tv_sec = 1;
     tv.tv_usec =500;

 if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO,(char *)&tv, sizeof(tv))!=0)
///
///
nbrepacket=recv(sock, packet, sizeof(packet), 0);
if(nbrepacket<0)
{
   ///0 paquet reçu
   //Traitement avant fermeture
   exit(-1);
}

mais ça foncionne pas, en faite lorsque je change mon adresse Ip le programme doit se fermer puisque il recoit plus de paquet!
Help :(
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
1108
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
3
Merci
Quand je regarde dans MSDN la fonction setsockopt il y a d'écrit :
the recv function returns WSAETIMEDOUT

WSAETIMEDOUT = 10060, donc ton test
if(nbrepacket<0)
n'est pas correct.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 187 internautes nous ont dit merci ce mois-ci

Commenter la réponse de fregolo52
Messages postés
20
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
23 mars 2010
3
Merci
Merci pour votre réponse, j'ai fais des modif sur mon code, mais aparament j'ai pas compris le fonctionnement du
recv(..)
avec un time out au début , et oui
if(nbrepacket<0)
nbrepacket retourn -1 si pas reception de paquet au bout de 1s 500ms(nbrepacket c'est pas vraiment nombre de paquets ^^)...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 187 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ghanmi04_05