Socket

Résolu
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010 - 3 mai 2008 à 20:18
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 7 mai 2008 à 10:42
Bonjour,
J'ai créé un serveur et un client. Le serveur un TcpClient envoie un fichier au client par bloc de 102400 octets.
Voilà comment je fais pour faire simple

Serveur :
Lire dans le fichier 102400 octets
Envoyer les 102400 octets dans le flux du TcpClient (obtenu avec GetStream)

Client :
Lire autant que possible
Ecrire dans le fichier
Le problème, c'est qu'au cours du transfert, j'ai une erreur indiquant que la mémoire tampon est saturé ou la liste d'attente est pleine. Je suppose que j'écris trop dans le flux et je réceptionne pas assez vite.

Je voudrais savoir comment controler cette mémoire tampon pour pouvoir lui dire de reprendre dès qu'elle est vide. Ou si vous avez d'autre solution...

3 réponses

cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
7 mai 2008 à 10:37
Oui mais après j'avais quelques problèmes avec les thread  en faisant celà (je pouvais pas lancer un beginsend en même temps d'un callbackreceive). Pour faire plus simple j'ai crée mais propres fonctions dans des threads avec receive et send et du coup je n'ai plus de problème de buffer puisque c'est moi qui gère tout.
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
5 mai 2008 à 14:02
Bonjour

Tu peux demander à ton client à ce qu'il te retourne un octet au bout de x octets reçus, comme cela, tu sera en moyen de déterminer combien d'octets sont en attente.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 mai 2008 à 10:42
Bonjour

Bon ben si tu as trouvé une solution, tu peux marquer une réponse comme acceptée pour permettre à d'autres personnes de meilleures recherches.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Rejoignez-nous