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

📄 serverlistener.java

📁 QQ聊天
💻 JAVA
字号:
package com.sato.server.servermanager;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.net.ServerSocket;
import java.util.Vector;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import com.sato.pub.PackType;
import com.sato.pub.QQpack;
import com.sato.server.ServerFrame;
import com.sato.server.dao.factory.DAOFactory;
import com.sato.server.dao.inf.UserDAO;

public class ServerListener implements ActionListener{
	/**
	 * 
	 */
	private ServerManager servermanager;
	private ServerFrame sframe;
	private ServerSocket serverSocket;
	public ServerListener(ServerManager servermanager,ServerFrame sframe) {
		// TODO Auto-generated constructor stub
		this.sframe=sframe;
		this.servermanager=servermanager;
	}

	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		TimeNow time=new TimeNow();
		String date=time.getNow();
		QQpack pack=new QQpack();
		if(e.getSource().equals(servermanager.getRunbutton())){	
			FileWriter fw=null;
			BufferedWriter bw=null;
			try {
				fw=new FileWriter("./log/log.txt",true);
				bw=new BufferedWriter(fw);
				bw.write(date+"服务器启动"+"\n");
				bw.flush();
			} catch (Exception e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}finally{
				try {
					fw.close();
					bw.close();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
			try {
				
				serverSocket = new ServerSocket(8888);
				servermanager.setSs(serverSocket);
				new ServerThread(serverSocket,servermanager).start();
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				JOptionPane.showConfirmDialog(null, "服务器已经连接", "提示",JOptionPane.DEFAULT_OPTION);
				sframe.dispose();
//				e1.printStackTrace();
			}
			servermanager.getJlabel1().setIcon(new ImageIcon("./images/total/serverstart.gif"));
			servermanager.getRunbutton().setEnabled(false);
			servermanager.getStopbutton().setEnabled(true);
			servermanager.getForeoffbuton().setEnabled(true);
			this.fresh();
			servermanager.getMessageArea().append(date+"服务器启动"+"\n");
			sframe.getLogpanel().getCurruntLog().append(date+"服务器启动"+"\n");
		}
		else if(e.getSource().equals(servermanager.getStopbutton())){
			pack.setType(PackType.server_stop);
			QQpublic.sendToAll(pack);
			JLabel jlabel = new JLabel();
			servermanager.getJlabel1().setIcon(new ImageIcon("./images/total/serverstop.gif"));
			servermanager.getRunbutton().setEnabled(true);
			servermanager.getStopbutton().setEnabled(false);
			FileWriter fw=null;
			BufferedWriter bw=null;
			try {
				fw=new FileWriter("./log/log.txt",true);
				bw=new BufferedWriter(fw);
				bw.write(date+"服务器停止"+"\n");
				bw.flush();
			} catch (Exception e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}finally{
				try {
					fw.close();
					bw.close();
					QQpublic.closeAll();
					serverSocket.close();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}			
			UserDAO userdao=DAOFactory.createUserDAO();
			userdao.setAllOffline();
			this.fresh();
			servermanager.getMessageArea().append(date+"服务器停止"+"\n");
			sframe.getLogpanel().getCurruntLog().append(date+"服务器启动"+"\n");
		}
		else if(e.getSource().equals(servermanager.getForeoffbuton())){
			UserDAO userdao=DAOFactory.createUserDAO();
			int[] index=servermanager.getJtableonline().getSelectedRows();
			pack.setType(PackType.force_offline);
			for(int i=0;i<index.length;i++){
				String id=servermanager.getJtableonline().getValueAt(i, 0).toString();		
				userdao.updateOnline(id, false);
				try {
					QQpublic.sendMessage(id, pack);
					QQpublic.close(id, null);
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}			
			this.fresh();
		}
		else if(e.getSource().equals(servermanager.getEmitButton())){
			pack.setType(PackType.bulletin);
			pack.setContent(servermanager.getCallArea().getText());
			QQpublic.sendToAll(pack);
			servermanager.getCallArea().setText("");
			
		}
	}
	public void fresh(){
		Vector<String> columnNames = new Vector<String>();
		columnNames.add("QQ号码");
		columnNames.add("姓名");
		columnNames.add("密码");
		columnNames.add("性别");
		columnNames.add("年龄");
		columnNames.add("地址");
		columnNames.add("在线状态");
		columnNames.add("注册时间");
		Vector<Vector<String>> datas = DAOFactory.createUserDAO().selectAllemp(null,null,1);
		DefaultTableModel dataModel = new DefaultTableModel(datas, columnNames){
			public boolean isCellEditable(int row, int column) {
				return false;
			}
		};
		servermanager.getJtableonline().setModel(dataModel);	
	}

}

⌨️ 快捷键说明

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