Délégation Centre-Auvergne-Limousin

- Home - News - Conseils - SécuritéMise à jour  -  Liens  -  Accès  -

Délégation Centre-Auvergne-Limousin

import java.*;
import java.net.*;
import java.io.*;
import java.util.*;

public class ppopd {
public static void main( String argv[] ) throws IOException {
// ici argv[0] doit contenir l'adresse du Serveur donc il ne faut pas oublier
// de la passer en param ... sinon ça plante et il n'y a aucun test !!!

ServerSocket ss = new ServerSocket(Integer.parseInt(argv[0]));
while ( true )
new serv( ss.accept() );
}
}

class serv extends Thread {
Socket sock;
Socket Client;
String inputLine = "";
String ClientInputLine = "";
DataInputStream ClientIn = null;
PrintStream ClientOut = null;
serv ( Socket s ) {
sock = s;
setPriority( NORM_PRIORITY - 1 );
start();
}

public void run() {
try {
PrintStream out = new PrintStream(new BufferedOutputStream(sock.getOutputStream()), false);
DataInputStream in = new DataInputStream(new BufferedInputStream(sock.getInputStream()));
// on simule une réponse du serveur pour récupérer le username
System.out.println("Ok");
out.println("+OK ppopd by Xavier is ready");
out.flush();
while ((inputLine = in.readLine()) != null){
System.out.println( "Request: " + inputLine );
StringTokenizer tok = new StringTokenizer( inputLine, " @" );
String ordre = tok.nextToken();

if (ordre.equals("QUIT")){
ClientOut.println("QUIT");
ClientOut.flush();
out.println("+OK fin");
out.flush();
break;
} else {
if (ordre.equals("USER")){
if (tok.countTokens() == 2){
String username = tok.nextToken();
String servername = tok.nextToken();
System.out.println("ordre :" + ordre + "- user :" + username + "- server :" + servername);
// ouverture client

Client = new Socket(servername, 110);
ClientIn = new DataInputStream(new BufferedInputStream(Client.getInputStream()));
ClientOut = new PrintStream(new BufferedOutputStream(Client.getOutputStream()), false);
// la ligne suivante permet de lire le message d'invite et de vider le buffer
ClientInputLine = ClientIn.readLine();
System.out.println( "Response: " + ClientInputLine );
//out.println(ClientInputLine);
//out.flush();
// on envoie le USER
ClientOut.println("USER "+username);
ClientOut.flush();
ClientInputLine = ClientIn.readLine();
System.out.println( "Response: " + ClientInputLine );
out.println(ClientInputLine);
out.flush();
}else{
out.println("+OK fin car mauvaise config du nom nom@serveur.domaine");
out.flush();
break;
}
} else {
if (ordre.equals("UIDL")||ordre.equals("LIST")||ordre.equals("RETR")){
ClientOut.println(inputLine);
ClientOut.flush();
ClientInputLine = ClientIn.readLine();
System.out.println("reponse de" + ordre+ " : " + ClientInputLine);
if (ClientInputLine.startsWith("+OK")){
out.println(ClientInputLine);
out.flush();
do {
ClientInputLine = ClientIn.readLine();
System.out.println( ordre+ " : " + ClientInputLine );
out.println(ClientInputLine);

} while (ClientInputLine.compareTo(".")!= 0);
out.flush();
} else {
System.out.println( "Pb reponse de LIST ");
break;
}
} else {
{
ClientOut.println(inputLine);
ClientOut.flush();
ClientInputLine = ClientIn.readLine();
System.out.println( "Response: " + ClientInputLine );
out.println(ClientInputLine);
out.flush();
}
}
}
}

}
System.out.println( "Fin de communication");
out.close();
sock.close();
// penser a fermer la socket Client !!!!

}
catch ( IOException e ){ System.out.println( "I/O error " + e ); }
}
}

Page Up Updated 10 septembre, 2004 Hervé Chaudret
C.N.R.S.

 -   Home   -  News   -   Conseils   -  Sécurité   -  Mise à jour   -   Liens   -  Accès   -

C.N.R.S.