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

📄 baseserver.java

📁 一个用java 编写的可以和多个人聊天的服务器
💻 JAVA
字号:
package chat;

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

public class BaseServer
{
	public final static String USER_LIST_FILE = "userlist.txt";
	public final static String SERVER_LOG = "log.txt";

	public final static int HISTORY_LENGTH = 100;

	protected Hashtable userList = new Hashtable();
	protected Vector clientList = new Vector();
	public Vector userServerList = new Vector();
	public Vector messageHistory = new Vector();
	
	public BaseServer() throws IOException
	{
		readUserList();
	}
	
	protected void readUserList() throws IOException
	{
		String userid;
		String password;
		File f = new File(USER_LIST_FILE);
		if (!(f.exists()))
		{
			return;
		}
		FileReader fileReader = new FileReader(f);
		BufferedReader reader = new BufferedReader(fileReader);
		String fileText = reader.readLine();
		while (fileText != null)
		{
			int index = fileText.indexOf(' ');
			if (index != -1)
			{
				userid = fileText.substring(0, index);
				password = fileText.substring(index + 1);
				userList.put(userid.toLowerCase(), password);
			}
			fileText = reader.readLine();
		}
		reader.close();
	}

	public synchronized boolean isValidUserInfo(String user, String password)
	{
		String actualPassword = (String) (userList.get(user.toLowerCase()));
		return ((actualPassword != null) && actualPassword.equalsIgnoreCase(password));
	}

	public synchronized void addClient(ChatClient client)
	{
		clientList.addElement(client);
		
	}

	public synchronized void removeClient(ChatClient client)
	{
		clientList.removeElement(client);
	}


	public String[] getUser()
	{
		int count = userServerList.size();
		String[] users = new String[count];
		for (int i = 0; i < count; i++)
		{
			users[i] = (String) (userServerList.elementAt(i));
		}
		return users;
	}

	public synchronized void broadcastUser(String text)
	{
		addUserToServer(text);
		String[] users = getUser();
		ChatClient client;
		Enumeration clients = clientList.elements();
		while (clients.hasMoreElements())
		{
			client = (ChatClient) (clients.nextElement());
			try
			{
				client.clearUser();
				for (int i =0; i < users.length; i++)
				{
					client.addUser(users[i]);
				}
				//client.addUser(text);
			}catch (Exception e) {};
		}

	}

	public synchronized void broadcastRemovedUser(String text)
	{
		userServerList.removeElement(text);
		ChatClient client;
		java.util.Date curdate = new java.util.Date();
		ChatMessage message = new ChatMessage(curdate, text);
		message.messageText = "!exit " + text + " has left the chat room!";
		Enumeration clients = clientList.elements();
		while (clients.hasMoreElements())
		{
			client = (ChatClient) (clients.nextElement());
			try
			{
				client.removeUser(text);
				client.displayMessage(message);
			}catch (Exception e) {};
		}

	}
		

	public synchronized void broadcastMessage(String text)
	{
		ChatClient client;
		java.util.Date curdate = new java.util.Date();
		ChatMessage message = new ChatMessage(curdate, text);
		Enumeration clients = clientList.elements();
		while (clients.hasMoreElements())
		{
			client = (ChatClient) (clients.nextElement());
			try
			{
				client.displayMessage(message);
			}catch (Exception e) {};
		}
		addMessageToHistory(message);
	}

	public synchronized void addUserToServer(String user)
	{
		userServerList.addElement(user);
	}

	public synchronized void addMessageToLog(String message) throws IOException
	{
		FileWriter fileWriter = new FileWriter(SERVER_LOG,true);
		BufferedWriter writer = new BufferedWriter(fileWriter);
		writer.write(message, 0, message.length());
		writer.newLine();
		writer.close();
	}

	protected synchronized void addMessageToHistory(ChatMessage message)
	{
		messageHistory.addElement(message);
		while (messageHistory.size() > HISTORY_LENGTH)
		{
			messageHistory.removeElementAt(0);
		}
	}

	public ChatMessage[] getHistory()
	{
		int count = messageHistory.size();
		ChatMessage[] messages = new ChatMessage[count];
		for (int i = 0; i < count; i++)
		{
			messages[i] = (ChatMessage) (messageHistory.elementAt(i));
		}
		return messages;
	}
}

⌨️ 快捷键说明

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