首页>代码>java swing开发的socket远程控制开关机服务>/shutdown-client/src/cn/verp/server/ClientConnectionService.java
package cn.verp.server;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Date;

import javax.swing.JOptionPane;

import cn.verp.model.DataPack;
import cn.verp.swing.LoginFm;
import cn.verp.swing.MainFm;

public class ClientConnectionService extends Thread {
	private Socket socket;
	
	private LoginFm loginSw;

	private MainFm mainSw;
	
	private ObjectInputStream ois;
	
	private ObjectOutputStream oos;
	
	public ClientConnectionService(LoginFm loginSw){
		this.loginSw = loginSw;
	}
	
	public DataPack receive() throws Exception{
		if (checkConnectionIsAction()) {
			Object obj = ois.readObject();
			if (obj != null) {
				DataPack dp = (DataPack) obj;
				return dp;
			}
		}
		return null;
	}
	
	private void sendMessage(DataPack dp) throws IOException{
		dp.put(DataPack.KEY_CLIENTUPTIME, new Date());
		this.oos.writeObject(dp);
		this.oos.flush();
		this.oos.reset();
	}

	// ���ӷ��������ɹ��췽������
	private void connect2Server(String hostAddress, int port) throws IOException {
		this.socket = new Socket(hostAddress, port);
	}

	// �û���¼����������˴����û���
	// ����true��ʾ��¼�ɹ�
	// ����false��ʾ��¼ʧ��
	public String login(DataPack dp) {
		String loginResult = null;
		try {
			// ���ӷ�����
			this.connect2Server(dp.getStr(DataPack.KEY_CLIENTIP), dp.getInt(DataPack.KEY_CLIENTPORT));
			this.oos = new ObjectOutputStream( this.socket.getOutputStream() );
			// ��������˷����û��ĵ�¼��Ϣ�����а����û���
			sendMessage(dp);
			this.ois = new ObjectInputStream( this.socket.getInputStream() );
			// ��ȡ�������˵���Ӧ����ж��û��Ƿ��¼�ɹ�
			DataPack rdp = receive(); 

			// ��¼�ɹ�
			if ("success".equals(rdp.getMsg())) {
				// ��������������
				this.mainSw = new MainFm("�û�-"+dp.get(DataPack.KEY_USERNAME),this);
				this.loginSw.setVisible(false);
				this.loginSw.dispose();
				loginResult = "200";
			}else if("failure".equals(rdp.getMsg())){
				loginResult = "�û����ѵ�¼";
			}
		} catch (Exception ex) {
			loginResult = ex.getMessage();
			if ("Connection refused: connect".equals(ex.getMessage())) {
				loginResult = "Զ�̷������Ӳ��ϣ�";
			}
		}

		return loginResult;
	}


	public void sendMessage(String message, int type) throws IOException {
		if (checkConnectionIsAction()) {
			DataPack dp = new DataPack(message, type);
			dp.put(DataPack.KEY_USERNAME, this.loginSw.getUsername().getText());
			sendMessage(dp);
		}
	}

	@Override
	public void run() {
		try {
			while (checkConnectionIsAction()) {
				DataPack rdp = receive();
				if (rdp.getMsg().equals("serverClosing")) {
					sendMessage("serverClosing", 4);
					close();
				}else if (rdp.getType() == 2) {
					this.mainSw.getJTextArea1().append(rdp.getMsg());
				}
			}
		} catch (Exception ex) {
			//ex.printStackTrace();
			JOptionPane.showMessageDialog(
					this.mainSw, "�������˳����쳣�����˳��������µ�¼��", "��Ϣ",
					JOptionPane.INFORMATION_MESSAGE);
		}
	}

	private void close() throws IOException {
		if (checkConnectionIsAction()) {
			this.ois.close();
			this.oos.close();
			this.socket.close();
		}
	}

	public boolean checkConnectionIsAction(){
		if (socket.isClosed()) {
			JOptionPane.showMessageDialog(
					this.mainSw, "�����ѶϿ������˳��������µ�¼��", "��Ϣ",
					JOptionPane.INFORMATION_MESSAGE);
			return false;
		}
		return true;
	}
}
最近下载更多
微笑刺客  LV21 2023年1月13日
ewan007  LV30 2022年4月24日
露无畏  LV13 2022年4月18日
tangjj7260  LV18 2021年12月10日
一个好人520  LV10 2021年9月29日
675104182  LV14 2020年9月22日
huzh035  LV3 2020年2月19日
子不语103  LV7 2020年1月19日
pipulu  LV1 2019年9月24日
adminroot777  LV8 2019年9月23日
最近浏览更多
3334004690  LV11 2024年5月28日
uid0901  LV2 2024年4月2日
痴汉hug个人民 2023年2月21日
暂无贡献等级
微笑刺客  LV21 2023年1月13日
taoyi123  LV17 2022年12月29日
aixiao5213  LV1 2022年12月28日
炫瓶百事可乐  LV1 2022年12月1日
ewan007  LV30 2022年4月24日
1265260263  LV4 2022年4月8日
17842711  LV1 2022年3月27日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友