Oppure

Loading
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!

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