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

C++Builder Discussion :

Problème Socket et délai


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 135
    Par défaut Problème Socket et délai
    Bonjour,

    Je ne comprends pas qqch dans mon application server tcp developpée sous bcb5 pro:
    Symptome: j'affiche dans une TListView le résultat d'une socket reçu.
    Lorsque qu'un de mes clients tcp se trouve sur mon réseau local tout fonctionne très bien, l'affichage dans la TListView est quasi instantané, par contre,
    lorsque mon client tcp se trouve sur un autre réseau, dès que je reçois une socket, j'ai un affichage de ma TListView qui s'efface puis réapparait correctement et ce à chaque Socket reçu et traité comme une ralentissement.
    Est ce que ceci est déjà arrivé à qqn et existe-t-il un paramètre pour modifier et corriger celà?

    Merci pour vos remarques et futurs aides!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 135
    Par défaut
    D'après un ami, ce genre de soucis est du à la mauvaise gestion des sockets erronées par mon application.
    Si le temps entre le début et la fin d'une socket correcte est trop long ceci peut se produire...
    Existe-t-il un paramètre pour changer ce délai?
    J'utilise un TServerSocket dans C++builder 5, et traite les évènements:
    OnClientConnect
    OnAccept
    OnClientRead

    dans l'évènement OnClientRead je stocke dans un buffer ce que je recois et je le traite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Socket->ReceiveBuf(buf, sizeofBuf);
    J'utilise un vector que j'incrémente à chaque fois que je suis dans l'évènement OnClientConnect

    En gros voici le code de ces trois évenements
    Code : 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
     
    void __fastcall TFormServerApp::ServerSocketClientConnect(TObject *Sender,
          TCustomWinSocket *Socket)
    {
     // Ajout dans le vector de n CLIENT un nouveau Client définit comme non connecté
        VectorClient.push_back(CLIENT(Socket->SocketHandle));
    }
     
    //---------------------------------------------------------------------------
     
    void __fastcall TFormServerApp::ServerSocketAccept(TObject *Sender,
          TCustomWinSocket *Socket)
    {
        ListViewAddMessage(ListJournal, Socket, "\4", "ServerSocketAccept", "Authentification of system");
    }
     
     
    //---------------------------------------------------------------------------
    void __fastcall TFormServerApp::ServerSocketClientRead(TObject *Sender,
          TCustomWinSocket *Socket)
    {
        char              buf[256]; 
        IteratorVecClient   IteratorClient;
        int               sizeofBuf;
     
        IteratorClient = VectorClient.begin(); // return un itérateur sur le 1er élément du vecteur 
     
        while(IteratorClient!=VectorClient.end()) // Tq le vecteur des Clients n'est pas terminé
        {
     
            if(Socket->SocketHandle == (*IteratorClient).Socket.handle)  // Identification du Handle client
            {
                sizeofBuf = Socket->ReceiveLength(); 
                Socket->ReceiveBuf(buf, sizeofBuf); 
            // (long traitement)
                break;
            }
            IteratorClient++;
        }
    }
    Merci de m'informer s'il y a qqch qui vous choc

Discussions similaires

  1. [Debutant] Problème Socket Linux UDP
    Par AxldenieD dans le forum Réseau
    Réponses: 3
    Dernier message: 01/11/2005, 17h08
  2. Problème Socket
    Par karl2mil1 dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/09/2005, 23h35
  3. Problème socket raw ? bizarre :~
    Par MonsieurAk dans le forum Windows
    Réponses: 2
    Dernier message: 12/07/2005, 14h12
  4. [MFC] Problème Socket + Connexion SQL
    Par BananaUltra3C dans le forum MFC
    Réponses: 6
    Dernier message: 20/05/2005, 16h41
  5. [Réseau] Problème socket
    Par neenee dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 18/01/2005, 15h26

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