⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emailclient.java

📁 client server email system
💻 JAVA
字号:
 //DECALRE LIBRARIES NEEDED FOR CLIENT OPERATIONS
import java.io.*;
import java.net.*;
import java.util.*;
//DECLARE LIBARRIES NEEDED FOR GUI FUNCTIONS
import java.awt.*;
import javax.swing.*;

public class EMailClient
{
	//DECLARE VARIABLES USED BY CLIENT
	private static InetAddress host;
	private static final int PORT = 1234;
	private static Socket link;
	private static Vector inbox;
	private static Vector backupInbox;
	private static Vector userNames;
	private static User user;
	private static ObjectInputStream objectIn;
	private static ObjectOutputStream objectOut;

	public static void main(String[] args) throws IOException
	{
		try
		{
			//SET UP CONNECTION INFORMATION
			host = InetAddress.getLocalHost();
			link = new Socket(host, PORT);
			//SET UP CLIENT DATA STORAGE
			userNames = new Vector();
			inbox = new Vector();
			backupInbox = new Vector();
			//GET PERMITTED USER NAMES FROM SERVER
			getUserNamesFromServer();
			//LAUNCH LOGIN GUI
			MainLoginMenuGUI mainLoginMenuGUI = new MainLoginMenuGUI();
			Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
			final int HEIGHT = 300;
			final int WIDTH = 300;
			mainLoginMenuGUI.setBounds(((screenSize.width / 2) - (WIDTH / 2)),
							           ((screenSize.height / 2) - (HEIGHT / 2)), WIDTH, HEIGHT);
			mainLoginMenuGUI.setVisible(true);
		}
		//EXCEPTION HANDLING ROUTINES AND CLASSES
		catch(UnknownHostException uhe)
		{
			System.out.println("Host ID Not Found");
		}
		catch(IOException ioe)
		{
			ioe.printStackTrace();
		}
	}

	//RECIEVES VECTOR OF PERMITTED USER NAMES FROM SERVER
	private static void getUserNamesFromServer() throws IOException
	{
		try
		{
			//SET UP OBJECT INPUT STREAM FOR DATA RECEIPT
			objectIn = new ObjectInputStream(link.getInputStream());
			//GET SIZE OF USER NAMES VECTOR FROM SERVER
			Integer vectorSizeText = (Integer)objectIn.readObject();
			//RETRIEVE SIZE VIA TYPECAST TO PRIMITIVE
			int vectorSize = vectorSizeText.intValue();
			//EXTRTACT ALL USER NAMES FROM SERVER, ADD TO CLIENT VECTOR
			for(int count = 0; count < vectorSize; count++)
			{
				userNames.add((User)objectIn.readObject());
				User temp = (User)userNames.elementAt(count);
			}
		}
		catch (ClassNotFoundException cnfe)
		{
			cnfe.printStackTrace();
		}
	}

	//SHUTS DOWN THE CLIENT CORRECTLY WHEN FINISHED
	public static void closeDown()
	{
		try
		{
			//SEND UNDELETED MAIL BACK TO SERVER FOR STORAGE
			for(int count = 0; count < inbox.size(); count++)
			{
				returnMail(getMail(count));
				//DELETE MAIL FROM INBOX
				inbox.removeElementAt(count);
				count--;
			}
			//SET UP OUTPUT STREAM FOR MAIL
			ObjectOutputStream objectOut = new ObjectOutputStream(link.getOutputStream());
			//SEND MESSAGE SERVER TO SHUT DOWN CONNECTION
			String option = "QUITTING";
			objectOut.writeObject(option);
			//CLEAR OUTPUT BUFFER
			objectOut.flush();
			//CLOSE LINK
			link.close();
			//SHUT DOWN SYSTEM
			System.exit(0);
		}
		catch (IOException ioe)
		{
			ioe.printStackTrace();
		}
	}

	//SENDS ANY MAIL IN CLIENTS INBOX BACK TO SERVER(USUALLY NONE)
	private static void returnMail(Email mail)
	{
		try
		{
			//SET UP NEW OBJECT OUTPUT STREAM FOR SENDING MAIL BACK TO SERVER
			ObjectOutputStream objectOut = new ObjectOutputStream(link.getOutputStream());
			//SEND SERVER CORRECT INSTRUCTION
			String option = "SENDING";
			//SEND OPTION, MAIL THEN FLUSH BUFFER
			objectOut.writeObject(option);
			objectOut.flush();
			objectOut.writeObject(mail);
			objectOut.flush();
		}
		catch (IOException ioe)
		{
			ioe.printStackTrace();
		}
	}

	//CREATES A COPY OF CLIENTS INBOX FOR UNDELETION
	public static void backupMail()
	{
		//GET SIZE OF INBOX
		int vectorSize = inboxSize();
		//EMPTY PREVIOUS INBOX BACKUP
		backupInbox.removeAllElements();
		//COPY EACH INBOX ITEM TO BACKUP
		for(int count = 0; count < vectorSize; count++)
		{
			Email temp = getMail(count);
			backupInbox.add(temp);
		}
	}

	//RESTORES A COPY OF INBOX FOR UNDELETION
	public static void restoreMail()
	{
		//GET SIZE OF BACKUP
		int vectorSize = backupInbox.size();
		//EMPTY CURRENT INBOX
		inbox.removeAllElements();
		//COPY EACH ITEM FROM BACKUP TO INBOX
		for(int count = 0; count < vectorSize; count++)
		{
			Email temp = (Email)backupInbox.elementAt(count);
			inbox.add(temp);
		}
	}

	//ACCESSOR METHODS
	public static String getCurrentUserName()
	{
		return user.getUserName();
	}
	public static Vector getUserNames()
	{
		return userNames;
	}
	public static int getUserNamesSize()
	{
		return userNames.size();
	}
	public static String getName(int position)
	{
		User temp = (User)userNames.elementAt(position);
		return temp.getUserName();
	}
	public static Email getMail(int position)
	{
		return (Email)inbox.elementAt(position);
	}
	public static Socket getLink()
	{
		return link;
	}
	public static Vector getMailVector()
	{
		return inbox;
	}
	public static Vector getBackupVector()
	{
		return backupInbox;
	}
	public static int inboxSize()
	{
		return inbox.size();
	}

	//MUTATOR METHODS
	public static void setUser(User newUser)
	{
		user = newUser;
	}
	public static void addUser(User newUser)
	{
		userNames.add(newUser);
	}
	public static void addMail(Email email)
	{
		inbox.add(email);
	}
	public static void setBackupVector(Vector vector)
	{
			backupInbox = vector;
	}
	public static void setInbox(Vector vector)
	{
		inbox = vector;
	}
	public static void deleteMail(int position)
	{
		inbox.removeElementAt(position);
	}

	public static void deleteAll()
	{
		inbox.removeAllElements();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -