Socket asynchrone en C# [Résolu]

Co2r 10 Messages postés dimanche 10 février 2008Date d'inscription 2 novembre 2008 Dernière intervention - 24 oct. 2008 à 01:25 - Dernière réponse : Co2r 10 Messages postés dimanche 10 février 2008Date d'inscription 2 novembre 2008 Dernière intervention
- 24 oct. 2008 à 18:49
je voudrais savoir comment "vider" un Byte[]
enfaite j'ai un problème j'ai l'impression qu'il reste des donnés dans mon Byte[] je vous montre le code:
publicvoid ReceiveCallback(IAsyncResult ar)
{
int read = this.m_sock.EndReceive(ar);
 
if(read <= 0)
{
Buffer.SetByte(this.readbuf, 0, 0);
this.m_sock.BeginReceive(this.readbuf, 0, this.readbuf.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), null);
return;
}

this.msgsAera.Invoke(new DelegateDisplay(this.DisplayMessage), Encoding.ASCII.GetString(this.readbuf));
 
Buffer.SetByte(this.readbuf, 0, 0);
this.m_sock.BeginReceive(this.readbuf, 0, this.readbuf.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), null);
}
 
privatevoid DisplayMessage(string message)
{
this.msgsAera.AppendText(message);
}

et enfaite ça me donne:

NOTICE AUTH :*** Looking up your hostname...
NOTICE AUTH :*** Checking ident
NOTICE AUTH :*** Found your hostname
NOTICE AUTH :*** No identd (auth) response
:*** Found your hostname
ERROR :Closing Link: 127.0.0.1 (Connection Timed Out)
your hostname

donc il y a des choses (:*** Found your hostname et your hostname)
qui ne devrais pas être là si quelqu'un voit pourquoi...
je vous remercie d'avance
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
xmox667 357 Messages postés jeudi 8 juin 2006Date d'inscription 26 décembre 2011 Dernière intervention - 24 oct. 2008 à 10:36
3
Merci
Salut,
Peut être que le programme qui t'envoie les données ne répond pas.
Tu peux simplifier la fonction  ReceiveCallback comme ceci:
publicvoid ReceiveCallback(IAsyncResult ar)
{
if(m_sock.EndReceive(ar)>0)
msgsAera.Invoke(new DelegateDisplay(DisplayMessage), Encoding.ASCII.GetString(readbuf));

Buffer.SetByte(readbuf, 0, 0);
m_sock.BeginReceive(readbuf, 0, readbuf.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), null);
}

A+

Merci xmox667 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de xmox667
Co2r 10 Messages postés dimanche 10 février 2008Date d'inscription 2 novembre 2008 Dernière intervention - 24 oct. 2008 à 18:49
0
Merci
enfaite il suffisait de tenir compte de la longueur du buffer Encoding.ASCII.GetString(this.readbuf, 0, read)
voila ça fonctionne correctement maintenant
Commenter la réponse de Co2r

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.