StayCrunchy
Messages postés43Date d'inscriptionmercredi 24 novembre 2010StatutMembreDernière intervention26 février 2014
-
12 mai 2011 à 00:21
cs_Lucky92
Messages postés180Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention16 août 2012
-
12 mai 2011 à 07:56
Bonsoir,
J'ai un petit soucis avec les fonctions send et recv.
j'ai fait un petit programme qui permet d'envoyer un fichier d'un serveur à un client. Serveur sous ubuntu et client ubuntu d'abord, puis je l'ai refais, serveur sous windows avec visual C++ et client toujours sous ubuntu.
J'ai noté des différences dans les comportements de mon programme que je ne parviens pas à m'expliquer.
char buffer[VALEUR]; // VALEUR = 1000 pour commencer
char taille[20];
Voila, alors sur un client et serveur ubuntu, ca fonctionne et je peux même changer la valeur de VALEUR pour augmenter la quantité de donnée envoyé avec un seul send(). j'ai testé de 100 à 10000 et le transfert a abouti d'une machine à l'autre ( plus rapidement ).
Ca marche également d'un serveur sous windows compilé sous visual C++, mais la valeur max que j'ai pu donner à VALEUR est d'à peu près 1200.
Ce qui ne permet pas de transférer mon fichier assez vite à mon gout...
d'ou mes questions :
Comment rendre le transfert de ma machine sous windows à celle sous ubuntu plus rapide ? Et pourquoi entre les deux machines ubuntu cela est possible ...
Merci.
cs_Lucky92
Messages postés180Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention16 août 20122 12 mai 2011 à 07:56
Salut,
Il y a une option qui permet de dimensionner le buffer d'émission :
setsockopt( SO_SNDBUF , ...
Un conseil, évite le sizeof(buffer) et utilise plutôt VALEUR, car sizeof(buffer) peut prendre la taille du pointeur si la déclaration du tableau n'est pas dans le scope de l'appel au sizeof.