Newsgroup: it.comp.java
Titolo: Client in java





Ciao ragazzi sto facendo un semplice client di posta in java, 
soltanto che ho problemi con l'autenticazione... come faccio a farmi 
riconoscere??


 


mi sapete dare 2 dritte? Questo codice non mi funziona... ma 
non capisco dove sbaglio...


 


Grazie dell'attenzione


 


//mi connetto al server




Socket mailSocket = new 
Socket("
www.libero.it
", 25);


//creo 
uno stream per inviare i comandi


PrintStream os = 
 
new 
PrintStream(mailSocket.getOutputStream());


//creo uno stream per leggere i 
messaggi


DataInputStream is = new 
DataInputStream(mailSocket.getInputStream());


 


os.println("USER "+User);
String 
uid_res=is.readLine().substring(0,3);
os.println("PASS "+Passwd);
String pass_res 
=is.readLine().substring(0,3);
if(uid_res.compareTo("+OK")==0 &&  
uid_res.compareTo("+OK")!=0)
System.out.println ("Login eseguito 
correttamente");



 che ho problemi con l'autenticazione... come faccio a farmi riconoscere??
Forse non capisco bene il senso del tuo lavoro.
Magari si tratta di un semplice esempio 'scolastico'... in tal caso
possiamo riparlarne.
Ma se vuoi produrre qualcosa di utilizzabile per un utente finale
e che faccia senso all'interno del mondo delle tecnologie Java,
ti consiglio di non implementare il protocollo POP3 a mano.
Utilizza la API JavaMail, che si preoccupera' della connessione
con il server, autenticazione inclusa.
vedi 
http://java.sun.com/products/javamail/index.html
Facendo cosi' ti risparmi del lavoro,
il mail-client che produci sara' piu' stabile e affidabile,
e' sara' facile supportare altri protocolli come ad. es. IMAP4
senza fare tripli salti mortali con avvitamento.
Ciao e buon anno!
Luigi Antognini
-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com
 - The #1 Newsgroup Service in the World!
-----==  Over 80,000 Newsgroups - 16 Different Servers! =-----

Lo so che sembra non aver molto senso, pero' è un progetto d'esame...
potresti aiutarmi adesso???

dopo che gli passi user lo dai un ritorno a capo? (anche dopo la pass)

No...
Che devo fare? Come? Grazie per l'attenzione che mi dai...
il codice che ho scritto sta nel 1° thread
Grazie mille

 
Non riesco a negarti l'aiuto,
ma sarebbe una bella cosa se in un qualsiasi esame di
java si aggiungesse un po' di sano SENSO PRATICO.
Scusami lo sfogo... ora mi metto l'animo in pace ;-)
Alura...
mi pare di capire che tu voglia fare un accesso a POP3,
la porta per POP3 e' la 110 e non la 25, che e' riservata per
SMTP (invio di mails).
Poi... il host per la ricezione di posta in libero e'
pop.libero.it
 e non 
www.libero.it
, che invece
e' l'indirizzo per consultare il sito web.
Facendo queste due correzioni la tua autenticazione
funziona, uid_res & pass_res contengono "OK".
Ecco il codice funzionante.
Se hai ancora problemi sono qua :-)
Buon anno!!
Luigi Antognini
package test;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class StupidPop3Test {
    private static final String User = "userid";
    private static final String Passwd = "password";
    public static void main(String args[]) {
       try {
          Socket mailSocket = new Socket("
pop.libero.it
", 110);
          //creo uno stream per inviare i comandi
          PrintStream os = new PrintStream(mailSocket.getOutputStream());
          //creo uno stream per leggere i messaggi
          DataInputStream is = new DataInputStream(mailSocket.getInputStream());
          os.println("USER " + User);
          String uid_res = is.readLine().substring(0, 3);
          os.println("PASS " + Passwd);
          String pass_res = is.readLine().substring(0, 3);
          if (uid_res.compareTo("+OK") == 0 && uid_res.compareTo("+OK") != 0)
             System.out.println("Login eseguito correttamente");
       } catch (UnknownHostException e) {
       	e.printStackTrace();
       } catch (IOException e) {
       	e.printStackTrace();


DIMENTICAVO:
devi correggere
    if (uid_res.compareTo("+OK") == 0 && uid_res.compareTo("+OK") != 0)
in
    if (uid_res.compareTo("+OK") == 0 && uid_res.compareTo("+OK") == 0)
Nel mio post precedente manca questa correzione, poi
compare anche la scritta
"Login eseguito correttamente".
Ciao
Luigi Antognini


io mettevo 
www.libero.it
,25 perchč pensavo che bisognava connettersi al sito
di libero e sfruttare la porta 25...
Scusa la mia ignoranza... e grazie per l'aiuto che mi dai!!!

Ciao, ho corretto l'applicazione di riconoscimento utente, pero' ho un
problema... se l'utente o la password inserita č sbagliata, mi dice che il
LOG IN e' EFFETTUATO CORRETTAMENTE COMUNQUE, a prescindere dalla user o pass
che inserisco...
in particolar modo, ti rimando a questa stringa:
 if (uid_res.compareTo("+OK") == 0 && uid_res.compareTo("+OK") == 0)
             System.out.println("Login eseguito correttamente");
che senso ha fare un test di 2 cose IDENTICHE????
import java.net.*;
import java.io.*;
public class pop3 {
    private static final String User = "user";
    private static final String Passwd = "pass";
    public static void main(String args[]) {
       try {
          Socket mailSocket = new Socket("
pop.libero.it
", 110);
PrintStream os = new PrintStream(mailSocket.getOutputStream());
DataInputStream is = new DataInputStream(mailSocket.getInputStream());
          os.println("USER " + User);
          String uid_res = is.readLine().substring(0, 3);
          os.println("PASS " + Passwd);
          String pass_res = is.readLine().substring(0, 3);
          if (uid_res.compareTo("+OK") == 0 && uid_res.compareTo("+OK") ==
0)
             System.out.println("Login eseguito correttamente");
// os.println("LIST");
// String n_messaggi=is.readLine().substring(4);
// System.out.println("Sono presenti "+ n_messaggi);


 problema... se l'utente o la password inserita è sbagliata, mi dice che il

Scusa posso farti una domanda?Per quanto ne so io, se usi il comando PASS
per spedire la pasword la spedisce in chiaro sulla rete...insomma non è
molto sicuro!!
Anche io sto realizzando un piccolo client di posta (in java) e mi sono
posto questo problema:Io ho trovato il comando APOP ma non ho ancora capito
come funziona..
Cosa ne pensi???Conosci qualche altro comando per effettuare il login in
maniera più  sicura??
Grazie e Buon anno a tutti!!!!!!!!
Yuri

Prima fammi risolvere i problemi di connessione... poi penseremo a rendere
piu' sicura la pass...
"Passi di bimbo" bisogna fare!!!!
Ciao

 che senso ha fare un test di 2 cose IDENTICHE????
Scusami la distrazione, se fosse il primo gennaio avrei almeno
la scusa della notte in bianco! :-)
Intendevo scrivere
if (uid_res.compareTo("+OK") == 0 && pass_res.compareTo("+OK") ==0)
    System.out.println("Login eseguito correttamente");
Cosi' la scritta viene stampata in caso di OK per la userId  e OK per la password.
Nel codice che riporti sopra veniva testato solamente
la userid (2 volte, come giustamente riportavi).
Generalmente un POP3 server accetta qualsiasi userId,
anche se inisestente, poi reclama quando gli hai dato la password.
Quindi, testando unicamente la userid ricevevi sempre l'ok.
Mea culpa...


Cavolo grazie,
ma il risultato è sempre errato...
il programma entra comunque dentro al test e la condizione la verifica
sempre come true, perchè và sempre a leggere quello che c'e' dentro e non
esce mai...
aiutami...
 if (uid_res.compareTo("+OK") == 0 && pass_res.compareTo("+OK") ==0) {
  System.out.println("LogIn eseguito correttamente");
  os.println("LIST");
  String n_messaggi=is.readLine().substring(4);
  System.out.println("Sono presenti "+ n_messaggi);
 } else {
  System.out.println("User o Pass Errate");
 }

 aiutami...
Ok Frncesco, va bene, propongo di guardarcelo in privato,
non credo che possa essere di interesse per il NG.
Mandami la sorgente attuale in un file zippato,
cosi' parliamo della stessa cosa.


 ha scritto nel messaggio
news:auq838$5t3$1...@le.cs.unibo.it...

Ok hai ragione!!Perň quando riuscite a risolvere i problemi di connessione
che avete comunicatelo sul NG cosě pensiamo a come rendere piů sicura la
PASS č un argomento che interessa moltissimo anche a me perchč č un pb che
non ho ancora risolto.
Ciao
Yuri

Sicuramente!!!
vai tranquillo... Luigi mi sta aiutando e poi penseremo anche al tuo
problema!!
Ciao

come funziona..
Una fonte ufficiale
http://www.faqs.org/rfcs/rfc1939.html
(e collegate)
-- 
Ciao
	Fabrizio C.

 non ho ancora risolto.
Incapsula il canale con ssl.
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------

 ha scritto nel messaggio
news:aurscn$a5h$1...@le.cs.unibo.it...

Salve a tutti!come vanno qui i lavori?per i problemi di sicurezza dell'
autentificazione ho trovato il comando
APOP(
http://www.faqs.org/rfcs/rfc1939.html
) e una classe in java
(java.security) che contiene tutto il necessario per far funzionare la APOP.
Però ho ancora qualche problema: dopo la prima prova che ho fatto ho dovuto
interrompere tutto perchè dopo 10minuti non aveva ancora dato risposta...
Chi mi da una mano???