Inquiridor
sslStream ERRO READ()

Pergunta
-
olá pessoal,
utilizando o sslTream para conectar a um servidor imap, o server me retorno a mensagem de * Ok the Gimap server is ready....
mas só eu fizer uma gambi denrto do loop de leituro
aqui esta ele
static string ReadMessage(SslStream sslStream) { // Read the message sent by the server. // The end of the message is signaled using the // "<EOF>" marker. byte[] buffer = new byte[2048]; StringBuilder messageData = new StringBuilder(); int bytes = -1; do { bytes = sslStream.Read(buffer, 0, buffer.Length); // Use Decoder class to convert from bytes to UTF8 // in case a character spans two buffers. Decoder decoder = Encoding.UTF8.GetDecoder(); char[] chars = new char[decoder.GetCharCount(buffer, 0, bytes)]; decoder.GetChars(buffer, 0, bytes, chars, 0); messageData.Append(chars); // Check for EOF. if (messageData.ToString().IndexOf("<EOF>") != -1) { break; } } while (bytes != 0); return messageData.ToString(); }
durante a primeira leitura ele me retorno a mensagem e na comparação de fim de arquivo ele retorna false, logo ele volta pro loop, e ao tentar fazer a leitura o programa trava, sei que é pelo de não ter mensagen, mas como posso resolver este problema ?
o método foi retirado de :
http://msdn.microsoft.com/en-us/library/system.net.security.sslstream.read.aspx
Todas as Respostas
-
Também tentei da seguinte maneira
while (netStream.CanRead) { bytestoread = netStream.Read(reader, 0, reader.Length); resposta.AppendFormat("{0}", Encoding.UTF8.GetString(reader, 0, bytestoread)); }
na primeira leitura, ele consegue ler a mensagem, porem quando volta para a condição do loop, ela ainda é verdadeira, apesar de não ter mais dados a serem lidos, e tenta a leitura novamente, mas como não tem nenhum dado, ele da pau.
alguma solução ?
- Editado Alex Ribeirolr quarta-feira, 1 de agosto de 2012 17:26
-
Ope pessoal, consegui ler a resposta da seguinte maneira,
usei um StreamReader e inicializei ele com o sslStream,
deu certo, ele entende que não há mais respostas,
agora uma duvida para enviar mensagens ao servidor, envio com o próprio sslStream ou uso um StreamWriter inicializado com o sslStream?
-
agora uma duvida para enviar mensagens ao servidor, envio com o próprio sslStream ou uso um StreamWriter inicializado com o sslStream?
O que for mais fácil para você. Se o StreamWriter vai ser inicializado com o sslStream, significa que o StreamWriter vai escrever no sslStream e funcionar apenas como um "proxy", com a vantagem de ser mais simples para escrever texto (ao invés de escrever bytes).
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net