Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1722 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Taille maximal d'une trame dans une session TCP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Taille maximal d'une trame dans une session TCP

n°323962
Mordock
Posté le 05-03-2003 à 21:34:18  profilanswer
 

J'utilise une session TCP avec la classe CAsyncSocket de MFC
1) Quel est la taille maximal d'un paquet que je peut envoyer avec send ?
2) J'ai lut que 2 send envoyé peuvent arriver dans un meme receive esceque un meme send peut etre eclater en 2 receive ?
 
Merci d'avance  
Mordock

mood
Publicité
Posté le 05-03-2003 à 21:34:18  profilanswer
 

n°323970
mrbebert
Posté le 05-03-2003 à 21:41:17  profilanswer
 

TCP permet d'échanger un flux d'octets.
Tout ce qui est garantit, c'est que les octets envoyés seront reçus (c'est déja bien :) ), et dans le même ordre.
Mais il n'y a aucune notion de limites de paquets. Tu peux envoyer 10 octets, puis 20, et l'autre machine recevra 7, puis 14, puis 19 octets.


Message édité par mrbebert le 05-03-2003 à 21:41:58
n°323977
Mordock
Posté le 05-03-2003 à 21:49:13  profilanswer
 

Merci  
Pour pallier a ce probleme il faut bien utiliser un protocole TLV (Type longuer valeur) ???
 

n°323981
einstein2
Windaube, FAIS l'EFFORT !
Posté le 05-03-2003 à 21:51:52  profilanswer
 

65535 octets puisque codage sur 2 octets des datagrammes IP
 
ce datagramme IP étant ensuite fragmenté suivant les sous-réseaux traversés, des sous-réseaux peuvent n'autoriser que des paquets de qqs kos.
 
MAIS C AU NIVEAU IP ;-) pas TCP puisque IP décharge TCP des considérations Réseaux! TCP=couche transport.
 

Mordock a écrit :

J'utilise une session TCP avec la classe CAsyncSocket de MFC
1) Quel est la taille maximal d'un paquet que je peut envoyer avec send ?
2) J'ai lut que 2 send envoyé peuvent arriver dans un meme receive esceque un meme send peut etre eclater en 2 receive ?
 
Merci d'avance  
Mordock


Message édité par einstein2 le 05-03-2003 à 21:56:55
n°323991
mrbebert
Posté le 05-03-2003 à 21:57:19  profilanswer
 

Mordock a écrit :

Merci  
Pour pallier a ce probleme il faut bien utiliser un protocole TLV (Type longuer valeur) ???

connais pas :??:  
Non, il faut savoir ce qui est échangé (définir un protocole en quelque sorte).
Ou rien ne t'empêche de définir tes propres paquets, en précédant chacun d'eux d'un entier indiquant sa taille.

n°323992
Mordock
Posté le 05-03-2003 à 21:57:24  profilanswer
 

Merci

n°323999
mrbebert
Posté le 05-03-2003 à 21:58:49  profilanswer
 

Si vraiment tu veux des paquets, tu peux utiliser UDP.
Mais tu perds la fiabilité (rien ne te garantis que les paquets envoyés sont bien reçus, il n'y a pas de confirmation), et les paquets sont de taille assez réduite (de l'orde de 1,5 ko je crois)

n°324009
Mordock
Posté le 05-03-2003 à 22:00:56  profilanswer
 

Je veut utiliser TCP je veut pas que mes paquet se perde ...
vous me conseiller quoi comme longeur de trame maximal pour faire un chat ?

n°324014
mrbebert
Posté le 05-03-2003 à 22:05:05  profilanswer
 

Une dizaine de ko devrait largement suffire :)

n°324023
Mordock
Posté le 05-03-2003 à 22:07:17  profilanswer
 

Thx ;)

mood
Publicité
Posté le 05-03-2003 à 22:07:17  profilanswer
 

n°324042
blackgodde​ss
vive le troll !
Posté le 05-03-2003 à 22:24:03  profilanswer
 

sous win32 qd on demande a un socket tcp la taille maximum d'un packet, il repond 8192


---------------
-( BlackGoddess )-
n°324045
mrbebert
Posté le 05-03-2003 à 22:26:53  profilanswer
 

C'est la taille d'un paquet, ou la taille du buffer de réception:??:

n°324049
blackgodde​ss
vive le troll !
Posté le 05-03-2003 à 22:30:23  profilanswer
 

SO_RCVBUF, ca doit etre la taille du buffer de reception en effet (il me semble que si il y a des données en plus elles sont perdues)


---------------
-( BlackGoddess )-
n°324053
mrbebert
Posté le 05-03-2003 à 22:37:44  profilanswer
 

Elles sont pas réellement perdues (faut pas qu'il y ait de perte de données en TCP).
Mais si le buffer est plein (car ton programme ne l'a pas vidé en récupérant les données par un rec()), l'ordi ne pourra plus mémoriser les données qu'il reçoit. Du coup, il n'indiquera pas à l'émetteur qu'il les as reçus, et celui ci devra les ré-émettre.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Taille maximal d'une trame dans une session TCP

 

Sujets relatifs
[PHP] problème de sécurité -important-> session ID bizarretétaille des buffers de reception d'un recv
[php] meme chose que remote_addr mais pour la session en coursMessage de warning à l'execution d'un session_start().
[php] limiter la taille des img en upload[Flash] Taille du texte dynamique
problème taille de buffer /socket[PHP] session [resolu mais pas comme je veux ;) ]
[CSS/HTML] Ya moyen de changer la taille de la scrollbar ???[DBGrid] Taille du déplacement horizontal ?
Plus de sujets relatifs à : Taille maximal d'une trame dans une session TCP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR