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 :

Flush socket C après send


Sujet :

Réseau C

  1. #1
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut Flush socket C après send
    Bonjour,

    Je suis confronté à un problème avec une socket C en TCP. En effet, normalement en TCP la socket peut toujours être ouverte et le rester. C'est le but.

    Mais quand je fais un send, si je ne fais pas de shutdown le send ne s'envoie pas. Il attend quelque chose. J'aimerais donc faire un flush ou utiliser une autre méthode que je ne connais pas.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        char * requete = (char*) malloc(1024*sizeof(char));
        sprintf(requete, "2:%s", nom);
     
        err = send(socktcp, requete, (strlen(requete)+1), 0);
        if ( err < 0 ) {
            perror("client : Erreur lors de la recherche\n");
            shutdown(socktcp, 2);
        }
    Et avec ce code il y a donc un problème. Le send n'envoie rien tant que je fais pas de shutdown après. C'est étrange. Pouvez-vous m'aider ?

    D'avance merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Et en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    err = send(socktcp, requete, (strlen(requete)), 0);
    En gros sans ajouter 1 à la taille de ta chaine ?

  3. #3
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Aie aie aie c'est le même soucis sans faire +1. L'envoie se fait quand il y a le close(idsock); ou alors un shutdown. C'est embêtant... Je ne comprend pas pourquoi...

    Il n'y a aucun moyen de spécifier à la socket d'envoyer de force ? C'est bizarre pourtant send n'est pas bloquant et il envoie tout normalement... Je comprend pas.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    vérifiez que tous les bytes aient bien été envoyés :

    si send renvoie -1 quand il y a une erreur, quand son résultat est positif c'est le nombre de bytes réellement envoyés et si ce nombre n'est pas celui prévu, vous êtes censé continuer à envoyer ce qui n'est pas parti.

  5. #5
    Membre actif

    Inscrit en
    Août 2005
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 401
    Points : 228
    Points
    228
    Par défaut
    Bonsoir à tous,

    En réalité, mon programme JAVA serveur attendait un \n et je ne l'envoyait pas en C...

    Donc voilà le problème est résolu. Merci quand même !

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

Discussions similaires

  1. SOCKET - utilisation de send() pour envoyer un long
    Par bit_o dans le forum Réseau
    Réponses: 10
    Dernier message: 05/05/2007, 00h39
  2. [SOCKET] comment rendre send() bloquant
    Par damien99 dans le forum Visual C++
    Réponses: 4
    Dernier message: 23/02/2007, 16h15
  3. [Socket C#] Méthode Send
    Par adil_aeh dans le forum C#
    Réponses: 4
    Dernier message: 09/12/2006, 11h30
  4. Pb de socket : select() et send()
    Par olive_le_malin dans le forum Réseau
    Réponses: 16
    Dernier message: 11/06/2006, 11h42
  5. [SOCKET C] deux send() pour un recv()
    Par trois_1 dans le forum Développement
    Réponses: 4
    Dernier message: 01/12/2003, 19h13

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