30/07/09 10:47
dacanalr
Appena risolto un problema ecco che ne salta fuori un'altro!!!
Ho continuato il programma facendo una richiesta LIST al server e non riesco a leggerla perché qualcosa in invia() si blocca!
Ecco il codice se qualcuno ha qualche suggerimento!
Ciao Ciao
Ho continuato il programma facendo una richiesta LIST al server e non riesco a leggerla perché qualcosa in invia() si blocca!
Ecco il codice se qualcuno ha qualche suggerimento!
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using Microsoft.VisualBasic; using System.IO; namespace ControllaMail { class Program { static void Main(string[] args) { System.Console.Title = "ControllaMail - RDC"; string risposta; TcpClient server = new TcpClient("in.alice.it", 110); if (server.Connected) { Console.WriteLine("Connessione avvenuta"); } else { Console.WriteLine("Connessione fallita"); Console.Read(); server.Close(); return; } NetworkStream serverStream = server.GetStream(); rispostaServer(serverStream); Console.Write("\n\n"); risposta = invia(serverStream, "user yyyyyyy"); if (risposta != null) { Console.WriteLine("User " + risposta); } else { Console.Write("\nUser non scritto"); serverStream.Close(); server.Close(); return; } risposta = invia(serverStream, "pass xxxxxx"); if (risposta != null) { Console.WriteLine("Password " + risposta); } else { Console.WriteLine("\nPassword non scritta"); serverStream.Close(); server.Close(); return; } risposta = invia(serverStream,"list"); if (risposta != null) { Console.WriteLine(risposta); int numeroMessggi = Int32.Parse(risposta.Split(' ')[1]); Console.WriteLine(numeroMessggi); risposta = riceviMail(serverStream, numeroMessggi); if (risposta != null) { Console.WriteLine("\n\nUltimo Messaggio\n\n"); Console.Write(risposta); } } Console.WriteLine(invia(serverStream,"quit")); Console.WriteLine("Debug2"); Console.WriteLine(Console.ReadLine()); serverStream.Close(); server.Close(); } public static string invia(NetworkStream ns, string s) { byte[] command = System.Text.Encoding.Default.GetBytes(s + "\r\n"); StreamReader strReader = new StreamReader(ns); if (s != "list") { if (ns.CanWrite) { ns.Write(command, 0, command.Length); if (ns.CanRead) { return strReader.ReadLine(); } }else return null; } else { Console.WriteLine("Invia->list ! "); string ricevuta1 = null; string ricevuta2 = null; while (ns.CanRead) //Questo ciclo è maledetto!!! { ricevuta2 = ricevuta1; ricevuta1 = strReader.ReadLine(); Console.WriteLine(ricevuta1); if (ricevuta1 == ".") break; } return ricevuta2; } return null; } public static void rispostaServer(NetworkStream ns) { if (ns.CanRead) { StreamReader strReader = new StreamReader(ns); Console.WriteLine(strReader.ReadLine()); } } public static string riceviMail(NetworkStream ns, int n) { byte[] command = System.Text.Encoding.Default.GetBytes("retr " + n + "\r\n"); StringBuilder sb = new StringBuilder(); if (ns.CanWrite) { StreamReader strReader = new StreamReader(ns); ns.Write(command, 0, command.Length); Console.WriteLine("riceviMail1"); String ricevuta; while(ns.CanRead) { ricevuta = strReader.ReadLine(); if (ricevuta != ".") sb.AppendLine(ricevuta); else { break; } Console.WriteLine("RigaLetta : "+ricevuta); } return sb.ToString(); } else return null; } } }
Ciao Ciao
Ultima modifica effettuata da dacanalr 30/07/09 10:48
aaa