taille tampon fonction recv socket

taille tampon fonction recv socket - C++ - Programmation

Marsh Posté le 08-12-2010 à 09:10:28    

Bonjour,
 
Quelle taille faut-il utiliser dans la focntion recv d'une socket ?
plus précisement sur quel critère se basé pour choisir entre 512ko 1024ko 1Mo etc ..
 
Merci


---------------
.
Reply

Marsh Posté le 08-12-2010 à 09:10:28   

Reply

Marsh Posté le 08-12-2010 à 11:28:10    

512 ko parait déjà bien. Moi, je n'utilise que 32 ko, et les transferts sont rapides même pour des fichiers de plusieurs centaines de ko. Je n'ai pas pris une taille trop grande, car j'ai remarqué que mes fichiers arrivent souvent en petits morceaux, et que le cas de gros morceaux est rare (je fais de l'UDP sur un réseau local). De plus, si réserve une taille trop grande, cela risque de prendre trop de ressources mémoire pour ce module de transfert qui en a peut-être moins besoin que d'autres programmes qui tournent sur le même serveur.
 
Vous pouvez faire des tests avec différentes tailles, et voir si ça change quelque chose.

Reply

Marsh Posté le 08-12-2010 à 11:38:55    

Merci pour ta réponse, mais si possible j'aurais vraiment besoin d'une réponse plus précise techniquement svp


Message édité par Glock 17Pro le 08-12-2010 à 11:39:22

---------------
.
Reply

Marsh Posté le 11-12-2010 à 12:50:05    

65536 octets est la taille maximale d'un paquet IPV4 moins la taille du Header.
Mais le standard est de 1500 octets : le MTU de l'Ethernet.
 
cf Wiki
 
Attention tu peux en recevoir plusieurs d'un seul coup si tu ne read pas tout le temps.


Message édité par tartopron le 11-12-2010 à 12:52:18

---------------
Return -1
Reply

Marsh Posté le 11-12-2010 à 13:21:35    

j'utilise une socket synchrone bloquante j'imagine donc que je lis tout le temps, utiliser un tampon supérieur à (65536 + la taille du header) semble donc INUTILE ?


---------------
.
Reply

Marsh Posté le 17-12-2010 à 10:36:25    

Osef de la MTU.
Tout dépend de combien tu t'attends à recevoir.
En gigabit, tu peux recevoir quasiment 100Mo/s, donc un buffer de 1Mo pour une application rapide, ça ne me choquerait presque pas. Après c'est vraiment à voir, tu peux t'amuser à grossir tant qu'il t'es rempli complètement.
 
Par contre, si tu t'amuses à lire des lignes de texte, quelque ko ça suffit.
 
Dans tous les cas, le système reçoit indépendamment de ce que tu demandes. Le tampon du recv, c'est la taille du tampon dans lequel tu demandes au noyau de t'y recopier ce qui est arrivé.
C'est à dire que tu ne vas pas bloquer indéfiniment sur ton recv jusqu'à qu'il y ait la quantité que tu demandes.
 
A part économiser quelques appels systèmes il n'y a pas grand chose à gagner. Au mieux essayer d'avoir un multiple de 4Ko (taille de page), sinon, ça n'a pas une très grande importance.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed