Bonjour,
Je souhaiterais pouvoir ajouter un timout sur le connect de ma socket. J'ai déjà un timout effectif pour l'envoie mais malgré plusieurs essaie et des recherches sur internet impossible de trouver une solution.
Voici le bout de code de la fonction que j'utilise :
Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 SOCKET sock; //Cr�ation de la socket SOCKADDR_IN sin; int size = 10; char *buffer; buffer = (char*) malloc(sizeof(char*) * size); memset(buffer, 0, size); fd_set readfs; struct timeval tv; sin.sin_addr.s_addr = inet_addr(ip); sin.sin_family = AF_INET; sin.sin_port = htons(502); sock = socket(AF_INET,SOCK_STREAM,0); bind(sock, (SOCKADDR *)&sin, sizeof(sin)); if(connect(sock, (SOCKADDR *)&sin, sizeof(sin)) == SOCKET_ERROR) return "-1"; int ret = 0; FD_ZERO(&readfs); FD_SET(sock, &readfs); tv.tv_sec = 5; tv.tv_usec = 0; buffer[0] = 0x00; //Transaction ID buffer[1] = 0x01; //Transactio6n ID buffer[2] = 0x00; //Protocole ID buffer[3] = 0x00; //Protocole ID buffer[4] = 0x00; //Length buffer[5] = 0x04; //Length buffer[6] = numEsclave; //Num�ro d'esclave buffer[7] = 0x11; //Num�ro de la fonction //Envoie de la socket int a = send(sock, //La socket � envoyer buffer, //La requete � envoyer size, //La taille de la requete 0); if(a < 0) return "-1";
Le but serais donc de gérer un timeout d'environ 5 secondes sur la fonction connect se trouvant ligne 17 et qu'en cas de timeout cela retourne -1.
Est-ce que quelqu'un pourrait me donner une piste pour gérer un timeout sur une fonction connect ?
Je vous remercie d'avance![]()
Partager