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

  FORUM HardWare.fr
  Programmation
  C

  Sockets TCP - pourquoi recv() peut etre aleatoire ?? (paquets tronqués

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sockets TCP - pourquoi recv() peut etre aleatoire ?? (paquets tronqués

n°2237840
doublebeur​re
Posté le 11-09-2014 à 23:28:26  profilanswer
 

Salut,
 
 
il me semble que pour programmer un serveur TCP, les choses n'aillent pas forcement de soi.
 
TCP ayant tout un tas de mecanisme pour protéger la connection (détection des paquets manquants, etc...), pourquoi faut-il prévoir des cas compliques de paquets arrivant tronqués (étalés sur plusieurs recv()) et pourquoi n'obtient-on pa de facon garantie, les données d'un paquet et d'un seul paquet seulement ?

mood
Publicité
Posté le 11-09-2014 à 23:28:26  profilanswer
 

n°2237861
xilebo
noone
Posté le 12-09-2014 à 10:17:28  profilanswer
 

TCP te garantit que tu recois tous les octets ( à condition que la connexion reste établie ) , et dans l'ordre. Il ne te garantit pas que tu recevras en un seul recv tes 1000 octets, parce que de l'autre coté tu as envoyé en un seul send tes 1000 octets ( même si c'est très probable que ca soit le cas ).
 
en TCP on est en mode "STREAM" , il n'y a pas de notion de paquet mais juste de flux d'octet.
 
Si tu veux travailler par paquets , tu implémentes ta propre couche, ou tu travailles en UDP ( mais avec d'autres contraintes comme la non garantie d'ordre des paquets, ou de bonne réception du paquet ).

n°2237866
gilou
Modérateur
Modzilla
Posté le 12-09-2014 à 11:08:24  profilanswer
 

Comme ton protocole TCP va passer par une couche réseau plus "physique" (a priori IP), le redécoupage en paquets plus petits va dépendre du "path MTU" (ie de la taille des buffers de données des machines tout le long du chemin), cf cette explication (succincte) de Wikipedia.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2237918
doublebeur​re
Posté le 12-09-2014 à 22:46:13  profilanswer
 

Ok ok je comprends... en effet TCP garantit pas mal de truc, mais pas ca specifiquement. Merci.


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

  Sockets TCP - pourquoi recv() peut etre aleatoire ?? (paquets tronqués

 

Sujets relatifs
[SSRS] Performance aléatoireNombre aléatoire, arraylist (quizz, question)
Besoin d'aide su javascool (génération aléatoire d'image)Script multijoueur par Socket TCP
Fatal error allowed memory size aléatoirepersonalisation Tumblr affichage aléatoire
Créer un signal sonore aléatoire ?[Resolu] Création d'un générateur de code aléatoire sans doublon
nommer le contenu d'un nombre de feuilles aléatoire [XL2013]Comment générer un nombre aléatoire en C++ ?
Plus de sujets relatifs à : Sockets TCP - pourquoi recv() peut etre aleatoire ?? (paquets tronqués


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