adminclientreceivethread.java

来自「注:语音聊天部分还未完成」· Java 代码 · 共 177 行

JAVA
177
字号
package com.gamvan.club.users.im.admin;import java.awt.Color;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.Socket;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JOptionPane;import javax.swing.JTextField;import com.gamvan.club.users.im.tools.MyTextPane;/** *  * @管理员的接收线程 * by 幽梦还乡 from gamvan 2006/4/4 * */public class AdminClientReceiveThread extends Thread {	private JComboBox userOnlineList = null;	private MyTextPane receiveMeg = null;	private JTextField sendMegTextField = null;	private JButton sendMeg = null;	private Socket clientSocket = null;	private ObjectInputStream dataIn = null;	private ObjectOutputStream dataOut = null;	private ImageIcon icon = null;	private MessageNote mn = null;	private Color color = null;	public boolean isStop;	@Override	public void run(){			recevThread();			}	public void recevThread(){		while(!isStop && !clientSocket.isClosed()){			try{				//读取服务器发送过来的聊天信息				String megType = (String)dataIn.readObject();				if(megType.equalsIgnoreCase("系统信息")){//处理系统信息										String systemMeg = (String)dataIn.readObject();					receiveMeg.append(Color.LIGHT_GRAY,"[系统信息]");					receiveMeg.append(Color.PINK,systemMeg);					mn.getMegNote().append(Color.BLACK,"[系统信息]" + systemMeg);					//自动下滚					receiveMeg.setCaretPosition(receiveMeg.getDocument().getLength());									}else if(megType.equalsIgnoreCase("服务器关闭")){//处理服务器关闭										dataOut.close();					dataIn.close();					clientSocket.close();					receiveMeg.append(Color.RED,"服务器已经关闭" + "\n");					mn.getMegNote().append(Color.RED,"服务器已经关闭!!!" + "\n");					//自动下滚					receiveMeg.setCaretPosition(receiveMeg.getDocument().getLength());					break;									}else if(megType.equalsIgnoreCase("聊天信息")){//处理聊天信息																														String userName = (String)dataIn.readObject(); 					receiveMeg.append(Color.pink,userName);					mn.getMegNote().append(Color.pink,userName);										String sendAction =(String)dataIn.readObject();					receiveMeg.append(Color.BLACK,sendAction);					mn.getMegNote().append(Color.BLACK,sendAction);										String to = (String)dataIn.readObject();					receiveMeg.append(Color.BLACK,to);					mn.getMegNote().append(Color.BLACK,to);										String toSomebody = (String)dataIn.readObject();					receiveMeg.append(Color.BLUE,toSomebody);					mn.getMegNote().append(Color.BLUE,toSomebody);										String say = (String)dataIn.readObject();					receiveMeg.append(Color.BLACK,say+":");					mn.getMegNote().append(Color.BLACK,say+":");										String date = (String)dataIn.readObject();					receiveMeg.append(Color.LIGHT_GRAY,date+"\n\n");					mn.getMegNote().append(Color.LIGHT_GRAY,date+"\n\n");										String sendStatus = (String)dataIn.readObject();					receiveMeg.append(Color.lightGray,sendStatus);					mn.getMegNote().append(Color.lightGray,sendStatus);										String message = (String) dataIn.readObject();					color = (Color)dataIn.readObject();					receiveMeg.append(color,message+"\n\n");					mn.getMegNote().append(color,message+"\n\n");										//自动下滚					receiveMeg.setCaretPosition(receiveMeg.getDocument().getLength());									}else if(megType.equalsIgnoreCase("用户列表")){//处理用户列表										int testEnd = 0;					String userList = (String)dataIn.readObject();					String userNames[] = userList.split("\n");					userOnlineList.removeAllItems();         			userOnlineList.addItem("所有人");         			while(testEnd < userNames.length){         				userOnlineList.addItem(userNames[testEnd]);         				testEnd++;         			}									}else if(megType.equalsIgnoreCase("kicked!")){					//踢出管理员!_!					String systemMeg = (String)dataIn.readObject();					receiveMeg.append(Color.RED,"[踢人信息]" + systemMeg + "\n");					mn.getMegNote().append(Color.RED,"[踢人信息]" + systemMeg + "\n");					//自动下滚					receiveMeg.setCaretPosition(receiveMeg.getDocument().getLength());					JOptionPane.showMessageDialog(null,"你被踢出了聊天大厅!" +                            " 发言已经被屏蔽!"+                            "如果有问题请与系统最高级管理员联系!!",                           "系统警告",JOptionPane.WARNING_MESSAGE);					//评比不法分子:)					new AdminClientReceiveThread().isStop = true;         			sendMeg.setEnabled(false);         			sendMegTextField.setEditable(false);		}else if(megType.equalsIgnoreCase("下线")){					String leave = (String)dataIn.readObject();                	receiveMeg.append(Color.LIGHT_GRAY,leave);                	mn.getMegNote().append(Color.LIGHT_GRAY,leave);		}else if(megType.equalsIgnoreCase("警告")){					String warning = (String)dataIn.readObject();                	receiveMeg.append(Color.red,warning);                	mn.getMegNote().append(Color.red,warning);		}else if(megType.equalsIgnoreCase("图片")){								receiveIcon();//接收图片		}					}catch(ClassNotFoundException e){					} catch (IOException e) {		return;	}    }}	public void sendObject(Socket clientSocket,			ObjectOutputStream dataOut,ObjectInputStream 			dataIn,MyTextPane receiveMeg,			JComboBox userOnlineList,JButton sendMeg,MessageNote mn,JTextField sendMegTextField){		this.clientSocket = clientSocket;		this.dataOut = dataOut;		this.dataIn = dataIn;		this.receiveMeg = receiveMeg;		this.userOnlineList = userOnlineList;		this.sendMeg = sendMeg;		this.mn = mn;		this.sendMegTextField = sendMegTextField;		this.isStop = false;	}	private void receiveIcon() throws IOException, ClassNotFoundException{		String userName = (String)dataIn.readObject();				icon = (ImageIcon)dataIn.readObject();				receiveMeg.insertIcon(icon);				mn.getMegNote().insertIcon(icon);		receiveMeg.append(Color.blue,userName);		mn.getMegNote().append(Color.blue, userName);	}}

⌨️ 快捷键说明

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