Accueil > Forum > > > > recv(...); comment intégré un timeout ?
recv(...); comment intégré un timeout ?
vendredi 15 juin 2007 à 16:27:19 |
recv(...); comment intégré un timeout ?

paramotdam
|
Bonjour, Je suis débutant dans l'utilisation des sockets et j'aimerais amélioré un mini chat que j'ai trouvé sur ce site. Sans passé par les détails, voici ma question : Pour l'instant, j'ai : while(continue) { while(!kbhit()) { error = recv(sock, bufferRecv, sizeof(bufferRecv)-1, 0); if(error != (-1)) { bufferRecv[error] = '\0'; printf("Server dit : %s\n", bufferRecv); } ... } ... // autres instructions } Ce que je veut c'est que quand on appuie sur une touche, sa éxécute les "autres instructions" et que sinon, si il y a des données dans le buffer (provenant d'un autre PC qui utilise send(...)), sa les affiches. Hors là, le programme passe le while(!kbhit) puid il s'arrête sur "error = recv(sock, bufferRecv, sizeof(bufferRecv)-1, 0);" car aucune donnée n'est reçu. Je veux alors qu'il y ait un timeout sur la fonction recv() : si une donnée est reçu avant la fin du timeout, sa affiche "Server dit : tata" et si le timeout se passe en entier, que sa fasse les instructions suivantes. J'espère que j'ai été assez clair, Merci d'avance ;-) Damien
|
|
vendredi 15 juin 2007 à 16:32:07 |
Re : recv(...); comment intégré un timeout ?

paramotdam
|
J'ai oublié : j'ai trouvé sa [ Lien ] . Mais je ne comprend pas comme il faut faire...
|
|
vendredi 15 juin 2007 à 18:30:45 |
Re : recv(...); comment intégré un timeout ?

aardman
|
Réponse acceptée !
Salut, Sous windows, SO_RCVTIMEO n'est pas supporté, cf MSDN. Par contre, tu peux utiliser ioctlsocket() et l'option FIONREAD pour savoir si des données sont présentes dans le buffer de reception de ton socket. Si tu restes sur l'idée d'un recv bloquant avec timeout, tu doit pouvoir le faire avec select().
|
|
vendredi 15 juin 2007 à 18:57:54 |
Re : recv(...); comment intégré un timeout ?

paramotdam
|
Tout d'abord merci d'avoir répondu !
J'ai essayé avec ioctlsocket() mais sa marche pas : (serveur :) if(ioctlsocket(bufferRecv, FIONREAD, &argp) != (-1)) { error = recv(csock, bufferRecv, sizeof(bufferRecv)-1, 0); bufferRecv[error] = '\0'; color(12,0); printf(">>>> CLIENT DIT: %s\n",bufferRecv); }
Sa ne veut pas entrer dans mon "if". Mon client exécute sa en partie : (client :) printf("<<<< CLIENT DIT: "); fgets(bufferSend, sizeof(bufferSend), stdin); error = send(sock, bufferSend, strlen(bufferSend), 0);
Si j'enlève le "if", le serveur reçoit bien les caractères. Il me manque sûrement un truc dans mon code... mais quoi ?
|
|
vendredi 15 juin 2007 à 21:04:32 |
Re : recv(...); comment intégré un timeout ?

aardman
|
Salut, Le premier param n'est pas un buffer mais le socket concerné, faut revoir les params. ioctlsocket peut ne pas planter mais ne pas avoir de donnée dans son buffer pour autant, donc le test != (-1) est mal approprié.
|
|
vendredi 15 juin 2007 à 21:34:13 |
Re : recv(...); comment intégré un timeout ?

paramotdam
|
C'est bon sa marche ! Merci beaucoup aardman ! J'ai utilisé ioctlsocket comme tu m'a dit et j'avais fais une erreur dans ma fonction : j'avais mis sa : ioctlsocket(bufferRecv, FIONBIO, &argp); error = recv(csock, bufferRecv, sizeof(bufferRecv)-1, 0); alors qu'il fallait sa : ioctlsocket(csock, FIONBIO, &argp); error = recv(csock, bufferRecv, sizeof(bufferRecv)-1, 0);
Allez merci encore, a+ !
Damien
|
|
Cette discussion est classée dans : while, error, recv, timeout, bufferrecv
Répondre à ce message
Sujets en rapport avec ce message
!recv ou SOCKET_ERROR [ par AlexMAN ]
Bonjour, J'ai lu sur msdn et un peu partt ke lon pouvait reconnaitre la deconnexion d'un client si recv renvoyait 0, mais lorsk je fais par exemple ce
Requetes serveur cs 1.6 [ par Mini92 ]
En fait, j'essaye d'envoyer des requêtes sur mon serveur cs mais je n'obtiens aucun retour.Voilà le code si quelqu'un peu m'aider svp#include #include
socket: recv + timeout ??? [ par oliverman ]
Salut tt le monde, En fait mon probleme, c'est que je voudrais utiliser un timeout avec la fonction recv. Est ce qu'il ya une fonction similaire qui p
error C2653: 'TCircle' : is not a class or namespace name [ par azkab ]
bonjour tt le monde,j ai cette erreur dans mon programme "error C2653: 'TCircle' : is not a class or namespace name"qu'est ce que ca signifie?je suis
[HELP] Pb de compilation... [AHHHHHHH] [ par Mycado ]
Slt à tous,je me suis lancé dans le C++ mais j'ai des petits (gros plutot) pb lors de la compilation d'un programme.J'ai Visual C++ 6.0 sous windows ^
Impossible d'envoyer un mail avec Mapi + Outlook ? [ par GDon_Fr ]
Bonjour à tous,Je dois développer une application qui saura envoyer un mail via n'importe quel client mail compatible avec "Simple Mapi". En regardant
Mapi et outlook ... comment ca marche ? [ par GDon_Fr ]
Bonjour à tous,Comme j'ai pas de réponse à côté je me permets de venir sur ce forum, vu que ca devient super mega URGENT :((((Je dois développer une a
PB linkage (win32) [ par moustachu ]
Bonjour,Je dois faire évoluer une appli écrite sous w3.1. J'ai dépoussiérer pas mal de trucs mais il me reste quelques soucis avant de pouvoir compile
do{.................}while(FALSE). [ par oudkaramla ]
bonjour tout le mondej'ai un programme qui utilise la boucle do mais combiné avec false comme suitdo{................................}while(FALSE).je
parse error dans un fichier .rc ? [ par Jeffray ]
Bonjour,Une parse error dans un fichier .rc, j'utilise dev c++ 4.9.8.0.voici le code :IDD_ABOUT DIALOG DISCARDABLE 70, 50, 206, 102STYLE DS_MODALFRA
Livres en rapport
|
Derniers Blogs
[MIX 2010] - WINDOWS PHONE 7 EN SUPER STAR DU MICROSOFT MIX 2010 ![MIX 2010] - WINDOWS PHONE 7 EN SUPER STAR DU MICROSOFT MIX 2010 ! par redo
Me voici enfin arrivé au Microsoft Mix 2010, je dois vous avouer être arrivé un peu plus tard que d'habitude, ce qui explique que je n'ayez vu aucune info passer quant au premier keynote . certains événements sont plus importants que tout, ce qui était mo...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - LIVRE GRATUIT SUR PROGRAMMER WINDOWS PHONE 7 SERIES ![MIX 2010] - LIVRE GRATUIT SUR PROGRAMMER WINDOWS PHONE 7 SERIES ! par redo
Disponible gratuitement : (153 pages) PDF Version : http://download.microsoft.com/download/7/C/8/7C820C6F-C205-4ECF-B9F3-1505DD13F9BF/ProgWinPhonePreview.pdf XPS Version : http://download.microsoft.com/download/E/3/5/E359FC51-1CF5-47F1-9BF3-74AB09D3339B/P...
Cliquez pour lire la suite de l'article par redo SQL SERVER : ESTIMER LE NOMBRE DE LIGNES RENVOYéES PAR UNE REQUêTE AVEC SQLCLRSQL SERVER : ESTIMER LE NOMBRE DE LIGNES RENVOYéES PAR UNE REQUêTE AVEC SQLCLR par christian
Dans certains cas très particuliers il peut être intéressant de savoir le nombre de ligne que va renvoyer une requête sans exécuter cette dernière. En effet les opérations de comptage sont généralement gourmande en ressource est très difficile à optim...
Cliquez pour lire la suite de l'article par christian [WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF![WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF! par JeremyJeanson
Le code suivant est destiné à répondre à une problématique courante en Workflow : Vous avez une activité dont le designer est complexe ou dont l'affichage prend une place importante à l'écran et la possibilité Collapse/Expand ne répond pas pleinement à vo...
Cliquez pour lire la suite de l'article par JeremyJeanson [SHAREPOINT 2010] CRéER ET PACKAGER UNE APPLICATION SILVERLIGHT POUR SHAREPOINT 2010[SHAREPOINT 2010] CRéER ET PACKAGER UNE APPLICATION SILVERLIGHT POUR SHAREPOINT 2010 par neodante
L'intégration native de Silverlight dans SharePoint 2010 représente une avancée majeure dans la conception des applications sur la plateforme SharePoint. Et pour cause, Silverlight repousse les limites du Web de SharePoint en offrant une expérience plus r...
Cliquez pour lire la suite de l'article par neodante
Forum
C++C++ par mariem1988
Cliquez pour lire la suite par mariem1988
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|