Problème d'envoi de données

oliversleep Messages postés 58 Date d'inscription vendredi 21 décembre 2001 Statut Membre Dernière intervention 11 mai 2009 - 7 mai 2009 à 15:46
oliversleep Messages postés 58 Date d'inscription vendredi 21 décembre 2001 Statut Membre Dernière intervention 11 mai 2009 - 11 mai 2009 à 13:39
Bonjour,

Je bosse actuellement sur l'envoi de données par socket TCP.
Aucun problème pour le transport, mais ce qui me gène est la lenteur du système. Je suis obligé d'envoyé des paquets de 8192 octets, et ça ralentit énormément le tout.

Connaissez-vous une méthode pour passer outre cette taille ?

Merci

[h%3C/body ]

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 mai 2009 à 16:47
Salut
Lenteur ?
Bizarre.
Echanges sur réseau privé ou Internet ?

Ce qui peut influencer la vitesse :
- Charge du réseau (local ou Internet) ou mauvaise qualité de la connectique (pour le TCP seulement, UDP ne garantissant pas la qualité, il n'y a pas de contrôle)
- Taux de charge mémoire de la machine émetrice ou réceptrice qui n'aurait pas le temps de gérer son buffer d'envoi/réception

Tu limites les paquets à 8192 octets pourquoi, qu'est ce qui t'oblige à couper tes données ?
A mon avis, tu gères peut-être mal la réception, l'émission ne posant jamais de problème

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
7 mai 2009 à 20:06
Salut,

Vérifi le contarire,

Attention que tes données n'arrive pas trop vite dans ton socket cela pourait surcharger le procésseur (un peu comme une grande boucle sans DoEvents)

Ta solution de découpage est bonne.

Pour l'envoi de données par winsock il est préférable de:

Ne pas charger le fichier complet (je suppose que tu tranfert des fichier étant donné que tu as des paquets de 8192) en mémoire pour l'envoyer de suite,
cela ne sert à rien, winsock le découpe en packet de 8192 et appel plusieur fois la procédure DataArrival.

Envoyer un packet au serveur/client, attendre un message de retour du type "OK" puis procéder à l'envoi suivant.

cela confirme la réceprion, assure un suivis pour la reprise du téléchargement en cas de coupure et évite la perte éventuelle de données.

Pour plus d'infos va ds mon profil et regarde ma première source est porté sur le transfert de gros fichier avec Winsock, 
c'est une vielle source non mise à jour comportant quelques bugs mais elle fonctionne.

@+

 
0
oliversleep Messages postés 58 Date d'inscription vendredi 21 décembre 2001 Statut Membre Dernière intervention 11 mai 2009
7 mai 2009 à 21:04
merci de vos suggestions,
mais pour un  peu plus de détails :
la communication se fait sur un réseau local, entre un pc et une imprimante spéciale.
Aucun retour n'est effectué par l'imprimante, donc je ne peux pas me baser sur un système de question réponse.
J'ai juste une grosse trame à envoyer, mais lorsque l'imprimante reçoit elle est bien bien lente au niveau de l'impression, donc j'essaye d'optimiser tout ça.
(ça ne vient pas de l'imprimante du fait d'autres tests concluant sur la vitesse).

Je pense donc que ça viendrai de l'utilisation de la socket... mais j'arrive pas à cibler le problème, si vous avez d'autres idées.

[h%3C/body ]
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
7 mai 2009 à 21:11
Re!

Dis nous en plus sur le protocol utilisé par ton imprimante...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
oliversleep Messages postés 58 Date d'inscription vendredi 21 décembre 2001 Statut Membre Dernière intervention 11 mai 2009
11 mai 2009 à 13:39
Désolé je n'ai pas ce genre d'informations, je pars sur un projet déjà existant que j'essaye d'optimiser.

[h%3C/body ]
0
Rejoignez-nous