IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

probleme socket C [deconnect-reconnect]


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    82
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 82
    Par défaut probleme socket C [deconnect-reconnect]
    salut a tous , je vous expose mon problème donc

    j'ai connecté mon socket .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		....
                    monsock = socket(AF_INET,SOCK_STREAM,0);
     
    		connect(monsock , (SOCKADDR*)&configsock, sizeof(configsock));
    .....
    et dans un while(1) ; beaucoup de commandes et des threads sont mises en place . dont =

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    				.....
    while( recv(monsock ,bufferirc , sizeof(bufferirc),0 ) < 0 )
    .....
    qui me sert a voir quand le SOCKET est déconnecté mais il bug beaucoup et fonctionne pas correctement car il pose problème au 1er while .

    Mes questions =
    - y'a t'il un moyen autre de vérifier la déconnection d'un socket ? si oui lequel?
    - y'a t-il en C socket une fonction qui le gere automatiquement genre ( disconnectsocket() ) ? si oui syntaxe sil vous plait
    - autre méthode /organisation de mon code ?


    Ps : quand je dit deconnection + reconnection , c'est si la connection est rompu , le socket après un Sleep se reconnect automatiquement bien sure ( closesocket(); socket(); connect() ; ... ec etc )

    merci

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Regarde du côté de la fonction select, ça va beaucoup t'aider. Et ça t'évitera d'avoir plein de threads dans ton programme. Sache toutefois que sous Windows, select ne peut être utilisée qu'avec des sockets et seulement des sockets. Sous Linux elle peut-être utilisée avec des fichiers aussi.

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    82
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 82
    Par défaut
    ok merci mais quand j'utilise le select() sa sera sur la condition de deconnection ou sur le sock qui recv() < 0; ??
    je sélectionne quoi ?
    ( pas compris le principe désolé )

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 132
    Billets dans le blog
    150
    Par défaut
    Bonjour,

    De mémoire le select est bloquant est regroupe les différentes socket sur lequel nous pouvons lire, dans un petit tableau.
    Lorsque le select est débloqué, c'est qu'il y a eu de l'activité sur un des sockets que l'on surveille.

    De mémoire, lorsqu'une socket est deconnecté, on reçoit un 0 dessus ... donc le select va l'indiquer, car il va être débloqué puis va recevoir le 0 avec recv ... et donc on sait qu'il y a un problème.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    82
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 82
    Par défaut
    c est toujours autant bloqué avec select()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if( select(monsock + 1, NULL, NULL, &exceptfds, NULL)  == 0 )
    							{
    		if( recv(monsock ,bufferirc , sizeof(bufferirc),0 ) < 0 )
    								{  .....
    avec un exceptfds bloquante mon rcv() , un readfds

    me donne le meme probleme comme si j'avais pas utilisé de select() :s:s:s

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 132
    Billets dans le blog
    150
    Par défaut
    select est toujours bloquant.
    Pour le débloquer, il faut recevoir des données sur les sockets.

    De plus, j'oserais dire que vous l'utilisez mal, car vous devriez passer des valeurs en 2ième argument ... enfin je pense.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme socket requete POST
    Par killuaster dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 15/10/2006, 15h15
  2. [Système] Probleme Socket Php
    Par Reaggaman dans le forum Langage
    Réponses: 4
    Dernier message: 01/03/2006, 18h55
  3. Problemes socket
    Par Proxius dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/07/2005, 14h25
  4. Probleme socket
    Par Spolix dans le forum Réseau
    Réponses: 6
    Dernier message: 03/10/2003, 06h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo