Guest User

Untitled

a guest
Jul 20th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. import java.io.*;
  2. import java.net.*;
  3. import java.util.*;
  4.  
  5. class SmtpServer2 {
  6. static Vector<String> cmd = new Vector<String>();
  7.  
  8. static int whichCommand(String s) {
  9. if (cmd.size()==0) {cmd.add("HELO"); cmd.add("EHLO"); cmd.add("MAIL"); cmd.add("RCPT"); cmd.add("DATA"); cmd.add("."); cmd.add("QUIT"); }
  10. return cmd.indexOf(s);
  11. }
  12.  
  13. public static void main(String args[]) throws IOException{
  14. ServerSocket ss = new ServerSocket(25000);
  15. do {
  16. Socket s = ss.accept();
  17. PrintWriter fos = new PrintWriter(new FileOutputStream("received.txt"),true);
  18. PrintWriter sout = new PrintWriter(s.getOutputStream(),true);
  19. Scanner sin = new Scanner(s.getInputStream());
  20. // first greet the client
  21. System.out.println("NEW CLIENT");
  22. sout.println("220 localhost tiny SMTP server\r");
  23. boolean done=false;
  24. int state=0;
  25. while(!done) {
  26. String command = sin.nextLine();
  27. String[] tokens = command.split(" ");
  28. int cmd = whichCommand(tokens[0]);
  29. switch(state) {
  30. case 0: if(cmd==0 || cmd==1) {sout.println("250 Hello "+tokens[1]); state=1; } else done=true; break;
  31. case 1: if(cmd==2) {sout.println("250 Sender ok "); state=2; } else done=true; break;
  32. case 2: if(cmd==3) {sout.println("250 Receiver ok "); state=3; } else done=true; break;
  33. case 3: if(cmd==4) {sout.println("354 data reception "); state=4; } else done=true; break;
  34. case 4: if(cmd==5) {sout.println("250 Message accepted for delivery\r"); state=5;}
  35. else fos.println(command); break;
  36. case 5: if(cmd==6) sout.println("221 Closing connection\r"); done=true; break;
  37. }
  38. }
  39. System.out.println("CLIENT GONE");
  40. fos.close(); sin.close(); s.close();
  41. }while(true); // it's a server, endless loop !!!
  42. }
  43. }
Add Comment
Please, Sign In to add comment