2010-06-13 7 views
0

J'essaye d'écrire un client Imap4.
Pour cela, j'utilise un SslStream pour se connecter au serveur.
Tout va bien jusqu'à ce que j'envoie la commande "Login".
Lorsque j'essaie d'obtenir une réponse, SslStream.ReadByte() bloque le thread.
Le résultat est que mon programme se bloque toujours.
Que se passe-t-il ici ??SslStream.ReadByte() bloque le fil?

code:

 if (ssl) 
{ 
    s = stream; 
}

int cc = 0; MessageBox.Show("entered"); while (true) { int xs = s.ReadByte(); MessageBox.Show(xs.ToString()); if (xs > 0) { buf.Add((byte)xs); cc++; if (xs == '\n') { break; } if (cc > 10) MessageBox.Show(en.GetString(buf.ToArray())); } else { break; } } MessageBox.Show("left");

Répondre

4

Oui, Stream.ReadByte() bloquera jusqu'à ce que soit:

  • Le flux est fermé (auquel cas -1 est renvoyé)
  • Les données sont reçues sur le flux, dans lequel cas le prochain octet sera retourné

Donc, probablement le serveur auquel vous vous connectez n'envoie aucune donnée ... il peut w Soyez en attente de plus de données de votre part. À quel point êtes-vous convaincu que votre commande de connexion est envoyée correctement? As-tu vidé le flux sur lequel tu écris? Envoyé des délimiteurs ou des terminateurs de ligne requis?

+0

ooops Je pense que je n'ai aucun terminateur de ligne du tout – alex

+0

oui c'était tout! Merci – alex