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 :

TCP/IP send petit probleme


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Points : 11
    Points
    11
    Par défaut TCP/IP send petit probleme
    Bonjour,

    Je travaille sur l'envoie de donnees par mon client vers le serveur hors.
    Quand j'utilise la fonction send de facon trop rapproche dans mon programme le client recoit les 2 packets envoye comme 1 packet.
    C'est assez genant car le deuxieme packet est l'opcode qui me permet de dire au serveur que le client a finit d'envoyer et qu'il necessite les informations sur les joueurs, chat, npc...
    Concretement :
    send("salut");
    send("bonjour");

    Le serveur va recevoir "salutbonjour" alors que j'aurais aime recevoir mes 2 packets en 2 packet different...

    Mettre un sleep entre les deux fonctions est trop barbar et fait perde en vitesse le thread reseau...

    Merci de vos reponses !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 190
    Points : 219
    Points
    219
    Par défaut
    Salut,

    Il faut que tu mettes au point un petit protocole de communication.
    Tu peux par exemple faire précéder les données que tu souhaites envoyer par un header qui contient des informations relatives au paquet de données (type, taille, numéro de paquet).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Merci bien.
    Avant mon header contenait seulement un checksum du packet...

  4. #4
    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
    Il y a déjà un checksum dans TCP. Ça ne sert à rien de revérifier l'intégrité des données.
    Boost ftw

  5. #5
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Si tu parles de TCP, oublies les paquets... l'implémentation au dessus d'IP est purement anecdotique, TCP t'offre un FLUX de communication permanente et sûre. Comme si tu avais ouvert un fichier en écriture, (et que le serveur lisait un fichier).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  6. #6
    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
    Effectivement, il faut faire attention à bien distinguer UDP (mode paquet non connecté: pas de garantie sur l'arrivée et l'ordre d'arrivée) et TCP (mode flux connecté: garantie d'arriver dans l'ordre d'émission mais pas de mode paquet).

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 190
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Si tu parles de TCP, oublies les paquets... l'implémentation au dessus d'IP est purement anecdotique, TCP t'offre un FLUX de communication permanente et sûre. Comme si tu avais ouvert un fichier en écriture, (et que le serveur lisait un fichier).
    Quand on parle de paquets ici c'est juste une pour permettre aux clients et au serveur de pouvoir communiquer. Il faut pour cela mettre un petit protocole décrivant ce que contiennent les données issues du serveur. Ainsi il est possible aux différents clients de décoder ce qu'ils recoivent (sinon c'est juste une suite d'octets sans aucune signification). Ça n'a rien à voir avec TCP ou UDP.

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Haaa ben si

    En UDP... sendto(toto,"bonjour") et sendto(toto,"hello") causera la reception à l'autre bout de DEUX paquets distincts !!!

    Ne parlons pas de paquet quand il n'y a PAS de paquet.... et justement TCP cache la notion de paquet. La dénomination du socket est d'ailleurs SOCKET_STREAM par opposition à SOCKET_DATAGRAM.

    Sinon, pour la communication entre deux applications, se réferer au model OSI, et suivre scrupuleusement le principe.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

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

Discussions similaires

  1. Petit problème de fork
    Par osmose22 dans le forum Linux
    Réponses: 7
    Dernier message: 18/03/2007, 21h10
  2. [TP]petit probleme avec solution
    Par pompompolom dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 02/12/2004, 19h48
  3. petit probleme avec l'éditeur de builder
    Par qZheneton dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/10/2004, 16h19
  4. petit probleme de requete
    Par nico33307 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/08/2004, 11h36
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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