C# vider le buffer

xankow Messages postés 10 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 8 juillet 2008 - 7 juil. 2008 à 17:31
dahlianoir21 Messages postés 3 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 27 mai 2009 - 27 mai 2009 à 17:56
Bonjour,

je suis actuellement en train de faire un serveur qui envoie des messages tres courts et tres raprochés (dans le temps).
Le probleme c'est que windows met mes messages dans un buffer et n'envoie qu'une seule trame comprenant tous mes messages. Mes clients sont des robots, ils sont incapables de redecouper la trame. Ils executent le premier message puis vident leurs buffers. Donc mes autres messages sont perdus.
C'est l'algo de Nagle qui veut ca. Normalement ca peut etre evité en utilisant la commende NO_DELAY. Mais je travaille sous visual studio avec le framework 1.1 et avec des sokets en TCP.

J'ai vraiment besoin qu'une trame == un message.

Merci de votre aide.

5 réponses

Liverion Messages postés 296 Date d'inscription mardi 22 avril 2008 Statut Membre Dernière intervention 18 août 2008
8 juil. 2008 à 10:44
Attention, je n'y connais pas grand chose, je vais ptet proposer un truc idiot, mais est-ce que ca serait pas possible pour toi de femer la connexion après chaque trame pour l'obliger a realiser son envoi, puis la rouvrir avant la trame suivante ? Meme si je pense que tu perdrais en rapidité.

~~
Les trois lois de Codes-Sources :
Loi 1) Tu lis et respectes le reglement
Loi 2) Tu penses à valider si une reponse apportée à ton problème t'a aidé
Loi 3) Si tu ne respectes pas les 2 premières ....TU SORS !!
0
xankow Messages postés 10 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 8 juillet 2008
8 juil. 2008 à 10:50
Salut,
ta solution a ete etudiée, et elle me fait perdre un peu de temps c'est vrai. Mais le principal probleme vient du fait que j'ai plusieurs clients. Ca devient tres difficile d'ecrire a un client en particulier et de l'identifier si son socket change a chaque message.
Je prefererai pouvoir deconnecter l'algo de Nagle.

Merci de ton aide et de ton temps.
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
8 juil. 2008 à 14:23
Hello,

Ca fait un moment que je n'ai plus travaillé avec des sockets, mais n'y a-t-il pas ne méthode Flush permettant de vider le buffer ?

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
xankow Messages postés 10 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 8 juillet 2008
8 juil. 2008 à 16:45
Je crois pas que flush marche avec des Socket, c'est reservé au Stream.
non?
Si c'est pas le cas, je sais pas comment l'utiliser.
0

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

Posez votre question
dahlianoir21 Messages postés 3 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 27 mai 2009
27 mai 2009 à 17:56
salut je pense ke flush marche avec les socket (en c) essaye flush(id_de_ta_socket) ,c'est fflush qui ne marche pas avec les sokets.m
0
Rejoignez-nous