Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225

    [JAVA] Passare i parametri

    ho finalmente messo a punto il POP3 in java, ma manca un piccolo particolare.

    Il metodo mediante la classe StringTokenizer deve suddividere il messaggio nelle parti corrispondenti ai campi indicati nell’oggetto della classe Messaggio (sottoclasse annidata nella classe Msg) (Sender, Subject e Date) quindi deve invocare il metodo adNewMsg della classe Msg (un'altra classe del client Email) passandogli come parametri le variabili dei vari campi.



    codice:
    import java.net.*;
    import java.io.*;
    import java.util.*;
    
    public class RiceviMsg
    {
    int port;
    String host;
    private static BufferedReader in;
    private static DataOutputStream out;
    
    
    public static void main(java.lang.String[] args) throws Exception
    {
    String username = args[0];  // users name
    String password = args[1]; // password
    String popServer = args[2]; // POP servers name.
    boolean delete = false;
    boolean secure = false;
    			
    String inputLine; // string to store the line of text we read in.
    String numeroMessaggi; // numero messaggi
      try
    	{
    		
    		if (args.length > 3)
    			if (args[3].compareTo("-s") == 0)
    				secure = true;
    			else if (args[3].compareTo("-d") == 0)
    				delete = true;
    			else 
    				System.out.println("Errore: La sintassi è %java PopClient <username> <password> [-s] [-d]");
    
    		if (args.length > 4)
    			if (args[4].compareTo("-s") == 0)
    				secure = true;
    			else if (args[4].compareTo("-d") == 0)
    				delete = true;
    			else 
    				System.out.println("Errore: La sintassi è %java PopClient <username> <password> [-s] [-d]");	
    
    
    // connessione al server
    Socket s = new Socket("nome_host", 110); // host e porta
    out = new DataOutputStream( s.getOutputStream() ); 
    in = new BufferedReader( new InputStreamReader(s.getInputStream()) );
    String line;
    
    
    inputLine = readFromInputStream(); // autenticazione
    
    if (!readFromInputStream().startsWith("+OK"))
    	{
    	   System.out.println("User name errato, disconnessione in corso");
    	   s.close();
    	   System.exit(1);
    	}
    		
    	// invio pass
    	System.out.println("PASS " + password);
    	System.out.println("c: PASS ********");
    	// aspetta la risposta
    	inputLine = readFromInputStream();
    		
    	if (!inputLine.startsWith("+OK"))
    	{
    	System.out.println("Password errata, disconnesisone in corso");
    	s.close();
    	System.exit(1);
    	}
    
    else 
    
    		{
    	String timeStamp = inputLine.substring(4,inputLine.length());
    	System.out.println(timeStamp);
    			
    	
    	}			
    	
    	DataOutputStream("STAT");
    	
    	inputLine = readFromInputStream();
    	
    if (!inputLine.startsWith("+OK"))
    	{
    	System.out.println("Errore:" + inputLine);
    	s.close();
    	System.exit(1);
    	}	
    			
    int i = inputLine.lastIndexOf(' ');
    numeroMessaggi = inputLine.substring(4,i);
    
    System.out.println("Hai " + numeroMessaggi + " messaggio/i nella tua mailbox!");
    
    
    
    
    // scarica i messaggi
    // per ogni messaggio invochiamo il comando RETR with as parameter the number
    // (index) of the message
    int n = Integer.parseInt(numeroMessaggi);
    int numberBytes;
    for (int msg = 1;msg<=n;msg++)
    	 {
    	System.out.println("Retreaving message " + msg);							
    	DataOutputStream("RETR " + msg); 
    	inputLine = readFromInputStream();
    			if (!inputLine.startsWith("+OK"))
    		{
    			  System.out.println("Error: " + inputLine);
    		  s.close();
    		  System.exit(1);
    		}
    	 i = inputLine.lastIndexOf(' ');
    	 numberBytes = Integer.parseInt(inputLine.substring(4,i));
    	 inputLine = in.readLine(); 
    	  while (inputLine.compareTo(".") != 0)
    		{
    		if (inputLine.compareTo("..") == 0)
    			System.out.println(".");
    			else	
    				System.out.println(inputLine);
    				inputLine = in.readLine();
    		 }
    	if (delete)
    	   {
    		DataOutputStream("DELE " + msg);				
    		readFromInputStream();
    	   }	
    	   }//for						
    		
    // fine della connessione e della classe RiceviMsg		
    DataOutputStream("QUIT");
    readFromInputStream();
    s.close();
    System.exit(1);
    
    }
    
    catch (IOException e) { System.err.println("IOException : " + e);}
    }
    // metodo DataOutputStream
    private static void DataOutputStream(String s) throws IOException
    {
    	System.out.println("c: " + s);
    	System.out.println(s);
    	return;
    }
    
    // metodo readFromInputStream
    private static String readFromInputStream() throws IOException
    {
    	String s = in.readLine();
    	if (s != null)
    		System.out.println("s: " + s);	
    	return s; 
    }
    
    }


    ho capito che devo importare la classe stringtockenizer, ma non ho capito come fare tutto il resto. Qualcuno può aiutarmi?

    Grazie
    ...credi sia aria quella che stai respirando?

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    StringTokenizer tok = new StringTokenizer("word1 word2 word3");
    while (tok.hasMoreTokens()) {
    System.out.print(tok.nextToken());
    }
    poi decidi come usarlo

  3. #3
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225
    resta sul forum che ti faccio sapere, lo provo!
    ...credi sia aria quella che stai respirando?

  4. #4
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225
    l'ho compilato, e non mi ha dato nessun errore. Al posto di word1, word2 e word3 ci metterò le voci dcei campi che a me interessano (Sender, Subject, Date), giusto?

    Una situazione analoga è nella classe SMTP, il quale metodi invia quindi dati contenuti in stringhe prefissate che sono i comandi SMTP e dati presi dalle variaili dell’oggetto Messaggio passato in ingresso.

    Il codice non dovrebbe essere molto divero, dico bene?
    ...credi sia aria quella che stai respirando?

  5. #5
    Utente di HTML.it L'avatar di MOBILUK
    Registrato dal
    Apr 2001
    Messaggi
    225
    ecco l'attuale codice:

    codice:
    import java.io.*;
    import java.util.*;
    import java.net.*;
    
    public class InviaMsg
    {
    int port;
    String host;
    
    public static final String CRLF = "\r\n";
    
    public static void main(String[] args) throws Exception
      {
        Socket s = new Socket("nome_host", 25);
        OutputStreamWriter out = new OutputStreamWriter(s.getOutputStream());
        BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
        String line;
    
        line = in.readLine();
        System.out.println(line);
         if(!line.startsWith("220"))
           {
             throw new Exception(line);
           }
    
    // saluto server       
        line = "HELO nome_host.dominio";
        out.write(line+CRLF); out.flush();
        System.out.println(line);
    
    // risposta server
        line = in.readLine();
        System.out.println(line);
         if(!line.startsWith("250"))
           {
             throw new Exception(line);
           }
    
    // Sender
         line = "MAIL FROM: <user@nome_host>";
         out.write(line+CRLF); out.flush();
         System.out.println(line);
    
         line = in.readLine();
         System.out.println(line);
           if(!line.startsWith("250"))
             {
                throw new Exception(line);
             }
    
    // destinatario
            line = "RCPT TO: <user@nome_host>";
            out.write(line+CRLF); out.flush();
            System.out.println(line);
    
            line = in.readLine();
            System.out.println(line);
              if(!line.startsWith("250"))
    	    {
                  throw new Exception(line);
                }
    	    
    // Subject
            line = "Subject: ";
            out.write(line); out.flush();
            System.out.println(line);
    
            line = in.readLine();
            System.out.println(line);
              if(!line.startsWith("250"))
    	    {
                  throw new Exception(line);
                }
    	    
    // scrittura testo
            line = "DATA";
            out.write(line+CRLF); out.flush();
            System.out.println(line);
    
            line = in.readLine();
            System.out.println(line);
              if(!line.startsWith("354"))
    	    {
                  throw new Exception(line);
                }
    
    
    // comando chiusura
            line = "QUIT";
            out.write(line+CRLF); out.flush();
            System.out.println(line);
    
            line = in.readLine();
            System.out.println(line);
              if(!line.startsWith("221"))
    	    {
                  throw new Exception(line);
                }
            
            s.close();
        }
    }
    ...credi sia aria quella che stai respirando?

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    direi yes :metallica

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.