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++ Discussion :

Quelle classe ou fonction utiliser pour envoyer des messages par TCP IP


Sujet :

C++

  1. #1
    Nouveau membre du Club

    Homme Profil pro
    Ing. dev
    Inscrit en
    Septembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing. dev
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 29
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut Quelle classe ou fonction utiliser pour envoyer des messages par TCP IP
    Bonjour,

    C'est la première fois que je dois faire un projet avec une communication TCP et je ne sais pas qu'elle classe ou fonction utiliser pour arriver à mes fins.

    J'ai un serveur qui ne fait que d'attendre une connexion TCP pour lire une chaine de caractère envoyée sur un port. Le serveur est passif, il ne répond pas après la réception du texte.

    Mon rôle est d'envoyer une chaine de caractère au serveur en étant sur que celui-ci l'ai bien reçu.
    Il y a une contrainte au niveau du temps, je peux me permettre un délai lors de l'établissement de la connexion mais aucun lorsque j'envoie le message.
    Je dois donc gérer séparément la connexion au serveur et l'envoi de messages.
    Lors de la connexion je dois pouvoir modifier un timeout.
    Avant d'envoyer un message je dois être certain que que la connexion est valide.

    J'ai testé les classes TTcpClient et TIdTCPClient mais je n'arrive pas faire ce que j'aimerais.

    Le but final est de créer une DLL qui sera utilisée par Simatic WinCC permettant l'envoi de message.

    J'utilise l'outil de développement C++ Builder 2007.

    Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    TCP n'est pas un protocole orienté message.
    Il serait peut-être plus simple d'utiliser un protocole plus adapté à vos contraintes, comme UDP, si vos messages sont de petites tailles.

  3. #3
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Citation Envoyé par bacelar Voir le message
    TCP n'est pas un protocole orienté message.
    C'est vrai: une connexion TCP doit être vue comme un flux in-interrompu de données.
    Si tu veux y ajouter la notion de 'message' (parlons ici de 'blocs' de données), tu vas devoir l'implémenter toi-même.
    Par exemple en décrétant qu'un message se termine systématiquement par un caractère de type 'retour charriot' ('\n' en C/C++).
    Donc ton programme va lire chaque octetreçu sur sa socket et la stocker dans un buffer. Dès qu'il détecte un '\n', il sait qu'il a reçu un bloc complet et peut le passer au reste de l'application pour qu'elle le traite.
    Ton programme vide alors le buffer et recommence pour le message suivant.

    Il serait peut-être plus simple d'utiliser un protocole plus adapté à vos contraintes, comme UDP, si vos messages sont de petites tailles.
    Surtout pas!
    UDP est avant tout un protocole qui autorise la perte de paquets. Si les messages qu'ils envoient doivent tous arriver à destination, TCP est un meilleur choix.

    Il y a une contrainte au niveau du temps, je peux me permettre un délai lors de l'établissement de la connexion mais aucun lorsque j'envoie le message.
    Je te conseille alors de sactiver l'algorithme de Nagle sur ta socket TCP . Tu y gagneras en vitesse au prix d'une légere augmentation de bande passante.
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  4. #4
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Boost.Asio peut être intéressant, si tu utilises déjà boost par exemple (dans le cas contraire aussi, mais tu seras peut-être plus réticent pour ajouter une bibliothèque à tes dépendances).
    Elle permet de mâcher le travail.

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Il serait peut-être plus simple d'utiliser un protocole plus adapté à vos contraintes, comme UDP, si vos messages sont de petites tailles.
    Mais dans ce cas, le serveur devra impérativement renvoyer un datagramme de confirmation de bonne réception, sachant que ce datagramme peut être lui-même perdu, donc il faut gérer les retransmissions et ignorer les éventuels doublons côté serveur...

    Bref, faut (presque) réimplémenter TCP, donc ce n'est pas forcément optimal côté temps de développement, même si in fine le résultat sera souvent "meilleur" en performances avec de l'UDP.
    Mais bon, quitte à bosser aussi bas, pour ma part je passerais directement en Raw Sockets en m'évitant les couches UDP/IP.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    UDP ne garantie pas l'ordre d'acheminement non plus.
    Boost ftw

  7. #7
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Bref, faut (presque) réimplémenter TCP, donc ce n'est pas forcément optimal côté temps de développement
    C'est le moins qu'on puisse dire !

    , même si in fine le résultat sera souvent "meilleur" en performances avec de l'UDP.
    Non: un paquet TCP transite aussi vite qu'un paquet UDP. Le seul cas où UDP est plus rapide que TCP c'est si un paquet TCP précédent a été perdu, soit 0.4% des cas pour une transmission internet, et grosso modo moins d'un cas sur un million pour un réseau local LAN filaire. Mais dans ce cas, il faudra encore gérer le désordonnancement des paquets avec UDP (ou même d'abord savoir si ça a un sens au niveau de son appli).

    Mais bon, quitte à bosser aussi bas, pour ma part je passerais directement en Raw Sockets en m'évitant les couches UDP/IP.
    De deux choses l'une:

    - soit c'est pour une transmission dans un réseau local, donc probablement en filaire et donc le TCP fera aussi bien (taux de perte de paquets infime).

    - soit c'est pour une transmission via le net, et un paquet non-TCP et non-UDP ne survivra pas au premier routeur rencontré.
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Sur une sémantique message, le cas de perte ou de rejeu est facilement implémentable sans avoir recours à des fenêtre de temporisation, des fenêtre de bufferisation etc...

    TCP/IP donne beaucoup de service mais UDP à un périmètre d'utilisation aussi vaste.

    nouknouk, tes statistiques prennent-t-elles en compte le cout d'établissement et de fermeture de connexion, le problème des démarrage progressif (Nagles) etc... ?

  9. #9
    Nouveau membre du Club

    Homme Profil pro
    Ing. dev
    Inscrit en
    Septembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing. dev
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 29
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    Merci de vos réponses.

    Voici quelques précisions sur vos remarques:

    1 - Je n'ai pas le choix que d'utiliser TCP qui est imposé par le serveur. Celuis-ci est une application achetée où je n'ai aucun pouvoir de modification.
    2 - Le serveur attend des blocs contenant du texte avec un terminateur "\r" pour séparer les diverses chaines.
    3 - Le serveur ne retourne aucun message.
    4 - Nous travaillons sur un réseau LAN et le réseau Internet ne sera jamais utilisé.
    5 - Je n'ai pas besoin d'optimiser à la milli-seconde le protocol. Mais avant d'envoyer un message je dois être sur que la connexion est toujours OK car je dois éviter au maximum de bloquer mon application (DLL) plus de 100ms lors d'un envoi de message.


    En fait j'ai juste besoin :
    - de pouvoir tester si la connexion est réellement valide (Je suis p'être naif, mais je pensais que Connected ou Select de la classe TTcpClient me donnais) en cas de coupure du câble ou autre.
    - de gérer les timeout qui sont actuellement proche des 20s.

    Je vais voir Boost.Asio si ça arrange mes bidons...

  10. #10
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par nouknouk Voir le message
    Non: un paquet TCP transite aussi vite qu'un paquet UDP.
    Pas tout à fait : traverser (logiciellement) la couche TCP est plus long que traverser la couche UDP : pas de machine à états, pas de fenêtres, pas de fragmentation, pas de connexion trois points, etc.

    Attention : soyons bien d'accord, là, on parle de gain très légers (de l'ordre de la microseconde au mieux pour chaque paquet). Sur UN envoi, c'est difficilement mesurable. Sur un transfert soutenu, c'est mesurable, voire significatif.

    Citation Envoyé par nouknouk Voir le message
    - soit c'est pour une transmission dans un réseau local, donc probablement en filaire et donc le TCP fera aussi bien (taux de perte de paquets infime).
    Toujours pareil : ce n'est qu'un problème de temps de traversée de la stack. Pas plus, pas moins.

    Citation Envoyé par nouknouk Voir le message
    - soit c'est pour une transmission via le net, et un paquet non-TCP et non-UDP ne survivra pas au premier routeur rencontré.
    Je n'envisageais pas une seule seconde d'utiliser des raw sockets sur WAN, je te rassure...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Aucun protocole IP ne pourra dire en temps réel si le câble est déconnecté ou pas. C'est pas leur fonction. Débranché le câble ne réinitialisa pas les connexions TCP. Vous le rebranchez en moins de 2 minutes et les connexions sont encore opérationnelles.

    L'approche la plus raisonnable est de faire des envoies non bloquant dans la partie cliente.

  12. #12
    Nouveau membre du Club

    Homme Profil pro
    Ing. dev
    Inscrit en
    Septembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing. dev
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 29
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Aucun protocole IP ne pourra dire en temps réel si le câble est déconnecté ou pas. C'est pas leur fonction. Débranché le câble ne réinitialisa pas les connexions TCP. Vous le rebranchez en moins de 2 minutes et les connexions sont encore opérationnelles.
    Je suis pas pro en communication mais je pensais qu'il était possible en utilisant des fonctions qui agisse à bas niveau de savoir si le récepteur (serveur) est toujours actif dans un socket ouvert.


    Citation Envoyé par bacelar Voir le message
    L'approche la plus raisonnable est de faire des envoies non bloquant dans la partie cliente.
    Oui je crois que c'est une bonne solution.
    Je vais envoyé mes messages par socket non bloquant et faire une boucle (de max 100ms) qui vérifie si mes données ont bien été envoyées.

  13. #13
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par lesteph Voir le message
    Je suis pas pro en communication mais je pensais qu'il était possible en utilisant des fonctions qui agisse à bas niveau de savoir si le récepteur (serveur) est toujours actif dans un socket ouvert.
    Le driver Ethernet peut savoir instantanément si le câble est branché ou pas, c'est d'ailleurs ce qui permet à ton OS de te le dire.
    Mais cela n'a absolument rien à voir avec les connexions TCP/IP, situées bien plus haut dans le modèle OSI, et qui peuvent "survivre" sans connexion physique pendant un petit moment (classiquement, trente secondes est un timeout courant).

    Citation Envoyé par lesteph Voir le message
    Je vais envoyé mes messages par socket non bloquant et faire une boucle (de max 100ms) qui vérifie si mes données ont bien été envoyées.
    Ou tu mets tout ça dans un thread et tu communiques au travers d'une FIFO, ça marche bien aussi.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  14. #14
    Nouveau membre du Club

    Homme Profil pro
    Ing. dev
    Inscrit en
    Septembre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing. dev
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2009
    Messages : 29
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Le driver Ethernet peut savoir instantanément si le câble est branché ou pas, c'est d'ailleurs ce qui permet à ton OS de te le dire.
    Mais cela n'a absolument rien à voir avec les connexions TCP/IP, situées bien plus haut dans le modèle OSI, et qui peuvent "survivre" sans connexion physique pendant un petit moment (classiquement, trente secondes est un timeout courant).
    Le driver Ethernet ne peut pas savoir si le câble est coupé après un switch.
    Et il n'y a pas que la coupure de fil qui peux poser problème, l'application serveur peux être KO.

    Citation Envoyé par Mac LAK Voir le message
    Ou tu mets tout ça dans un thread et tu communiques au travers d'une FIFO, ça marche bien aussi.
    Oui c'est une bonne solution, mais un peu trop compliqué à gérer dans mon cas. C'est l'application qui appelle ma DLL qui dois gérer le buffer des données a envoyer. Ma DLL dois juste retourner 1 ou 0 si les données ont bien été envoyées.

    Je vais creuser et faire encore des tests avec les classes Indy et Boost.

    Merci en tout cas de tous vos commentaires

  15. #15
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par lesteph Voir le message
    Le driver Ethernet ne peut pas savoir si le câble est coupé après un switch.
    Bien entendu, vu que le câble n'est PAS coupé : la connexion physique entre le switch et ta carte est "parfaite", c'est après que ça part en sucette.

    Citation Envoyé par lesteph Voir le message
    Et il n'y a pas que la coupure de fil qui peux poser problème, l'application serveur peux être KO.
    C'est TCP qui se charge de ça, après timeout, et non pas Ethernet.

    Citation Envoyé par lesteph Voir le message
    Oui c'est une bonne solution, mais un peu trop compliqué à gérer dans mon cas. C'est l'application qui appelle ma DLL qui dois gérer le buffer des données a envoyer. Ma DLL dois juste retourner 1 ou 0 si les données ont bien été envoyées.
    Alors pas le choix, faudra le faire en synchrone.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  16. #16
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Alors pas le choix, faudra le faire en synchrone.
    Question que je me pose : est-ce que tu es garanti d'avoir reçu l'ACK du distant quand send retourne sur une socket TCP synchrone ou est-ce que tu es seulement sur que les données sont dans le buffer d'émission et tu te prendras éventuellement une erreur plus tard si la transmission a échoué ?

  17. #17
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Question que je me pose : est-ce que tu es garanti d'avoir reçu l'ACK du distant quand send retourne sur une socket TCP synchrone ou est-ce que tu es seulement sur que les données sont dans le buffer d'émission et tu te prendras éventuellement une erreur plus tard si la transmission a échoué ?
    En UDP, la réponse est bien entendu "non" : quand tu reviens du send, c'est que c'est dans le buffer d'envoi et c'est tout.
    En TCP, je pense qu'il doit être possible d'attendre l'ACK avant de revenir. Toutefois, il serait très très étonnant (pour des raisons évidentes de performances) que ce soit le mode par défaut des stacks sur les OS classiques...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  18. #18
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    En TCP, je pense qu'il doit être possible d'attendre l'ACK avant de revenir. Toutefois, il serait très très étonnant (pour des raisons évidentes de performances) que ce soit le mode par défaut des stacks sur les OS classiques...
    J'avais un vague souvenir de ce genre: send retourne dès que les données sont transmises au buffer de la stack et non à la réception du ACK.

    Donc une partie de son problème de départ (celle que je souligne) :

    Citation Envoyé par lesteph Voir le message
    Il y a une contrainte au niveau du temps, je peux me permettre un délai lors de l'établissement de la connexion mais aucun lorsque j'envoie le message.
    pourrait se traiter en jouant sur la taille des buffers d'émission/réception. Faudrait regarder comment évolue le volume de données produites par rapport à la vitesse de connexion : augmenter les buffers d'émission selon des scénarii appropriés à son appli.

  19. #19
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Faudrait regarder comment évolue le volume de données produites par rapport à la vitesse de connexion : augmenter les buffers d'émission selon des scénarii appropriés à son appli.
    Habituellement, plus les buffers sont gros, et plus il y a de latence entre l'envoi "officiel" (retour du send, donc) et l'envoi réel sur le réseau... Du moins pour TCP/IP, en UDP c'est en général sans réelle corrélation.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  20. #20
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Habituellement, plus les buffers sont gros, et plus il y a de latence entre l'envoi "officiel" (retour du send, donc) et l'envoi réel sur le réseau... Du moins pour TCP/IP, en UDP c'est en général sans réelle corrélation.
    Tout à fait. Mais si ce qui l'intéresse est de récupérer rapidement la main, ça peut être une piste. Mais bien sur sans connaître plus des contraintes de son système, ce n'est là qu'une idée.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] info pour envoyer des données par mail
    Par boubourse92 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/01/2008, 13h04
  2. [C++] quelle structure de donnée utiliser pour stocker des vertices ?
    Par johnnyjohnny dans le forum Développement 2D, 3D et Jeux
    Réponses: 14
    Dernier message: 14/07/2007, 21h44
  3. formulaire pour envoyer des messages.
    Par cyrilmarc dans le forum Langage
    Réponses: 2
    Dernier message: 22/11/2006, 21h15
  4. [Mail] Codage d'une page pour envoyer des messages.
    Par cyrilmarc dans le forum Langage
    Réponses: 5
    Dernier message: 21/11/2006, 21h53
  5. Réponses: 4
    Dernier message: 28/03/2005, 19h42

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