/*
* SMTP client simulation.
*
* Created at 2020.6.14 by Espernato.
* Copyright @ 2020 Espernato.
* All rights reserved.
*
*/import java.io.*;import java.net.*;publicclassSMTPClient{publicstaticvoidmain(String[] args){try{
Socket my_socket =newSocket(InetAddress.getByName("127.0.0.1"),8001);// The server must be launched first,otherwise exception should be thrown to inform user.// In regard to the same connection,the output stream of server is also the input stream// of client,and the input stream of server is also the output stream of server.// Launch input stream.
InputStream input_stream = my_socket.getInputStream();// Wrap input stream with BufferedReader.
BufferedReader buffer_reader_Net =newBufferedReader(newInputStreamReader(input_stream));// Launch output stream.
OutputStream output_stream = my_socket.getOutputStream();
DataOutputStream data_output_stream =newDataOutputStream(output_stream);// Wrap output stream with BufferedReader.
BufferedReader buffer_reader_Key =newBufferedReader(newInputStreamReader(System.in));// Show some promotions.
System.out.println("┏━━━━━━━━━━━━━━━Inofomation━━━━━━━━━━━━━━┓");
System.out.println("┃ Welcome to Mail-World. ┃");
System.out.println("┃ You can write your message below. ┃");
System.out.println("┃ We will finish all things rest. ┃");
System.out.println("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛");while(true){
System.out.print("【Message】");
String message_to_send = buffer_reader_Key.readLine();// Store the message that wait to be sent.// Judge user want quit or not.if(message_to_send.equalsIgnoreCase("quit")){break;}else{// Show promotion about user's message.
System.out.println("【I(Client) want to send:"+message_to_send+"】");
data_output_stream.writeBytes(message_to_send+System.getProperty("line.separator"));
System.out.println("【Server replied:"+buffer_reader_Net.readLine()+"】");}}// Close all the streams and socket.
data_output_stream.close();
buffer_reader_Net.close();
buffer_reader_Key.close();
my_socket.close();}catch(Exception e){
e.printStackTrace();}}}
/*
* SMTP server simulation.
*
* Created at 2020.6.14 by Espernato.
* Copyright @ 2020 Espernato.
* All rights reserved.
*
*/import java.net.*;publicclassSMTPServerPro{publicstaticvoidmain(String[] args){try{// Construct a server socket.
ServerSocket my_socket_server =newServerSocket(8001);// Show some promotions.
System.out.println("┏━━━━━━━━Infomation━━━━━━━━━┓");
System.out.println("┃ Welcome to Mail-World. ┃");
System.out.println("┃ Here is Server for you. ┃");
System.out.println("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛");while(true){// Deal with the message that was sent by client.
Socket one_server = my_socket_server.accept();
System.out.println("【A client has been accepted.】");// Launch a new thread to deal with each client.newThread(newWorker(one_server)).start();}}catch(Exception e){
e.printStackTrace();}}}
/*
* Vital class:Worker.
*
* Created at 2020.6.14 by Espernato.
* Copyright @ 2020 Espernato.
* All rights reserved.
*
*/import java.net.*;import java.io.*;publicclassWorkerimplementsRunnable{
Socket my_socket;// Constructor.publicWorker(Socket s){this.my_socket = s;}// Overwrite function run().publicvoidrun(){try{// Show some promotions.
System.out.println("【Server is in place.】");// Create the input stream & output stream.
InputStream input_stream = my_socket.getInputStream();
OutputStream output_stream = my_socket.getOutputStream();
BufferedReader buffer_reader =newBufferedReader(newInputStreamReader(input_stream));
DataOutputStream data_output_stream =newDataOutputStream(output_stream);while(true){// Store the message that is received.
String message_received = buffer_reader.readLine();if(message_received==null){
System.out.println("【One client has left.】");break;}
System.out.println("【Client has sent a message : "+message_received
+"---Message-Length:"+message_received.length()+"】");// Judge client want to quit or not.if(message_received.equalsIgnoreCase("quit")){break;}// Reply to client,denote that server has got his message successfully.
String strEcho ="Your message have been received!Totally,"+message_received.length()+" letters.";
System.out.println("【Server has replied.】");
data_output_stream.writeBytes(strEcho+System.getProperty("line.separator"));}// Close all the streams & socket.
buffer_reader.close();
data_output_stream.close();
my_socket.close();}catch(Exception e){
e.printStackTrace();}}}