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

📄 chatservlet.java

📁 一个用java开发的自由聊天涂鸦室小程序,能给你一种不一样的感觉!
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			pout.println("<P align=left><TEXTAREA cols=19 name=S1 rows=18 style=\"COLOR: rgb(0,0,255); FONT-SIZE: 9pt\">");
			/*pout.println("****************");
			pout.println("房间[main]");
			pout.println("状态[开]");
			while(userlist.hasMoreElements()){
				pout.println("["+(String)userlist.nextElement()+"]");
				i++;
				//pout.print("\r\n");
			}*/
			while(roomlist.hasMoreElements()){
				room = (Room)(roomlist.nextElement());
				roommates = room.getUsers();
				pout.println("****************");
				pout.println("房间["+room.getName()+"]");
				pout.println("状态[开]");
				i = 0;
				while(roommates.hasMoreElements()){
					pout.println("["+(String)roommates.nextElement()+"]");
					i++;
					//pout.print("\r\n");
				}
				pout.println("");
			}
			pout.print("\r\n");
			pout.print("</TEXTAREA><BR><FONT color=#ff0000>聊天室在线</FONT><FONT color=#0066ff size=3>"+i+"</FONT><FONT color=#ff0000>人 ");
			pout.print("</FONT></P></FORM></TD></TR></TBODY></TABLE></BODY></HTML>");
			pout.flush();
			pout.close();
		}catch(IOException e){
		}
	}

	private synchronized boolean addRoomMessage(String room,Message message){
		Enumeration roommates=rooms.getRoomUsers(room);
		while(roommates.hasMoreElements()){
			users.addUserMessage((String)roommates.nextElement(),message);
		}
		return true;
	}
}

class UserList{
	private Hashtable list = new Hashtable();
	private Hashtable active = new Hashtable();

	UserList(){
	}

	protected synchronized boolean add(String user){
		if(exists(user)) return false;
		list.put(user,new MessageQueue());
		touch(user);
		return true;
	}

	protected synchronized Enumeration list(){
		return list.keys();
	}

	protected synchronized boolean drop(String user){
		if(!exists(user)) return false;
		list.remove(user);
		active.remove(user);
		return true;
	}

	protected boolean exists(String user){
		return list.containsKey(user);
	}

	protected void addMessage(Message message){
		Enumeration allUsers = list.keys();
		while(allUsers.hasMoreElements()) 
			addUserMessage((String)allUsers.nextElement(),message);
	}

	protected void addUserMessage(String user,Message message){
		((MessageQueue)list.get(user)).add(message);
	}

	protected void resetUser(String user){
		((MessageQueue)list.get(user)).reset();
	}

	protected void truncUserMsgs(String user){
		((MessageQueue)list.get(user)).trunc();
	}

	protected Enumeration getMessages(String user){
		touch(user);
		return ((MessageQueue)list.get(user)).listMessages();
	}

	protected synchronized void touch(String user){
		if(exists(user)) active.put(user,new Long(System.currentTimeMillis()));
	}

	protected synchronized Enumeration inactive(int timeout){
		Vector inactive = new Vector();
		long now = System.currentTimeMillis();
		long when = now - timeout;

		Enumeration users = list.keys();
		while(users.hasMoreElements()){
			String user = (String)users.nextElement();
			if(((Long)active.get(user)).longValue()<when) inactive.addElement(user);
		}
		return inactive.elements();
	}

}

class MessageQueue{
	private Vector messageq = new Vector();

	MessageQueue(){}

	protected synchronized void add(Message message){
		messageq.insertElementAt((Object)message,0);
		notifyAll();
	}

	protected synchronized Enumeration listMessages(){
		/*try{
			if(messageq.isEmpty()){
				wait(30*1000);
			}
		}catch(InterruptedException ie){}*/
		return messageq.elements();
	}

	protected synchronized void reset(){
		//if(messageq.size()>20) messageq.setSize(20);
		messageq.removeAllElements();
	}

	protected synchronized void trunc(){
		if(messageq.size()>30) messageq.setSize(30);
		//messageq.removeAllElements();
	}
}

class Message{
	private String user;
	private String message;

	Message(String user,String message){
		this.user = user;
		this.message = message;
	}

	public String toString(){
		return user+":"+message;
	}

	protected String getUser(){
		return user;
	}

	protected String getMessage(){
		return message;
	}
}

class Room{
	private String name;
	private String owner;
	private UserList users;
	private boolean status; // true: door open
							// false: door close
	
	Room(String name,String owner){
		this.name = name;
		this.owner = owner;
		status = true;
		users = new UserList();
	}

	protected Enumeration getUsers(){
		return users.list();
	}

	public String getName(){
		return name;
	}

	public String getOwner(){
		return owner;
	}
	
	public boolean equals(Object anObject){
		//if(anObject.getClass().getName()!="Room") return false;
		if(((Room)anObject).getName().equals(name)) return true;
		return false;
	}

	protected boolean addUser(String user){
		return users.add(user);
	}

	protected boolean dropUser(String user){
		return users.drop(user);
	}

	protected boolean isDoorOpen(){
		return status;
	}

	protected void openDoor(){
		status = true;
	}

	protected void closeDoor(){
		status = false;
	}
}

class RoomList{
	private Hashtable list = new Hashtable();
	private Hashtable active = new Hashtable();

	RoomList(){
	}

	protected synchronized boolean add(Room room){
		if(exists(room)) return false;
		list.put(room.getName(),room);
		touch(room.getName());
		return true;
	}

	protected synchronized boolean addUser(String room,String user){
		if(!exists(room)) return false;
		//touch(room);
		return ((Room)list.get(room)).addUser(user);
	}

	protected synchronized Enumeration list(){
		return list.elements();
	}

	protected synchronized boolean drop(Room room){
		if(!exists(room)) return false;
		list.remove(room.getName());
		return true;
	}

	protected synchronized boolean drop(String room){
		if(!exists(room)) return false;
		list.remove(room);
		return true;
	}

	protected boolean exists(Room room){
		return list.containsKey(room.getName());
	}

	protected boolean exists(String room){
		return list.containsKey(room);
	}
	
	/*protected void resetUser(String user){
		((MessageQueue)list.get(user)).reset();
	}*/

	protected synchronized void touch(String room){
		if(exists(room)) active.put(room,new Long(System.currentTimeMillis()));
	}

	protected synchronized Enumeration inactive(int timeout){
		Vector inactive = new Vector();
		long now = System.currentTimeMillis();
		long when = now - timeout;

		Enumeration rooms = list.keys();
		while(rooms.hasMoreElements()){
			String room = (String)rooms.nextElement();
			if(((Long)active.get(room)).longValue()<when) inactive.addElement(room);
		}
		return inactive.elements();
	}

	public int size(){
		return list.size();
	}

	public Enumeration getRoomUsers(String room){
		return ((Room)list.get(room)).getUsers();
	}

	protected synchronized boolean dropRoomUser(String room,String user){
		if(!exists(room)) return false;
		return ((Room)list.get(room)).dropUser(user);
	}

	protected Room get(String room){
		return (Room)list.get(room);
	}
}

class CommandParser{
	public static int parse(String message,StringBuffer str1,StringBuffer str2){
		String commStr="";
		int commNo=0;
		message = message.trim();
		if(message.length()<2) return -1;
		int i=0;
		if(message.charAt(0)!='/') return -1;
		while(i<message.length()&&message.charAt(i)!=' '){
			commStr = commStr + message.charAt(i);
			i++;
		}
		System.out.println("commStr:"+commStr);
		if(i<message.length()){
			message = message.substring(i);
			message = message.trim();
		}
		else message = "";
		System.out.println("message2:"+message);
		if(commStr.equals("/r")) commNo = 0;
		else if(commStr.equals("/i")) commNo = 1;  //进入房间
		else if(commStr.equals("/o")) commNo = 2;  //开门
		else if(commStr.equals("/c")) commNo = 3;  //关门
		else if(commStr.equals("/p")) commNo = 4;  //私聊
		else if(commStr.equals("/q")) commNo = 5;  //清屏
		else return -1;
		System.out.println("commNo:"+commNo);
		i = 0;
		//str1 = "";
		while(i<message.length()&&message.charAt(i)!=' '){
			str1.append(message.charAt(i));
			i++;
		}
		if(i<message.length()){
			message = message.substring(i);
			message = message.trim();
		}
		else message = "";
		System.out.println("Str1:"+str1);
		i = 0;
		//str2 = "";
		while(i<message.length()&&message.charAt(i)!=' '){
			str2.append(message.charAt(i));
			i++;
		}
		System.out.println("Str2:"+str2);
		return commNo;
	}
}

⌨️ 快捷键说明

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