loginlisten.java

来自「QQ聊天」· Java 代码 · 共 176 行

JAVA
176
字号
package com.sato.loginface;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;

import com.sato.client.chat.ChatFace;
import com.sato.client.chat.MyClientReader;
import com.sato.pub.PackType;
import com.sato.pub.QQpack;
import com.sato.pub.User;

public class LoginListen implements ActionListener{
	private QQlogin qqLogin;
	private Socket socket;
	private ObjectInputStream ois;
	private ObjectOutputStream oos;
	private String str;
	public LoginListen(QQlogin qqLogin) {
		this.qqLogin=qqLogin;
	}

	
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if (e.getActionCommand().equals("设置↓")) {
			qqLogin.getSetbt().setText("设置↑");
			qqLogin.setSize(330, 380);
		}
		else if(e.getActionCommand().equals("设置↑")){
			qqLogin.getSetbt().setText("设置↓");
			qqLogin.setSize(330, 245);
		}
		else if(e.getSource().equals(qqLogin.getLoginbt())){
			if(this.qqnumIsLaw()){
				if(this.passwordIsLaw()){
					if(this.ipIsLaw()){
						if(this.portIsLaw()){
							this.connect();
							this.sendPack();
							QQpack qqpack=new QQpack();
							qqpack=(QQpack) this.recievePack();
							if(qqpack.getType().equals(PackType.login_fail)){
								if(qqpack.getContent().equals("在线")){
									JOptionPane.showConfirmDialog(null, "用户已经在线", "提示",JOptionPane.DEFAULT_OPTION);
								}
								else if(qqpack.getContent().equals("用户不存在")){
									JOptionPane.showConfirmDialog(null, "用户不存在", "提示",JOptionPane.DEFAULT_OPTION);
								}
								else{
									JOptionPane.showConfirmDialog(null, "密码不正确", "提示",JOptionPane.DEFAULT_OPTION);
								}
								return;
							}
							else{
								qqLogin.dispose();
								new ChatFace(socket,ois,oos,qqpack);
							}
						}
					}
				}
			}
		}
	}
	public Boolean qqnumIsLaw(){
		Pattern pattern = Pattern.compile("[0-9]*");
		String str=qqLogin.getQqnumbercomobox().getSelectedItem().toString();
		Matcher isNum = pattern.matcher(str);
		if(str.equals("")){
			JOptionPane.showConfirmDialog(null, "QQ号码不能为空", "提示",JOptionPane.DEFAULT_OPTION);
			return false;
		}
		else if(isNum.matches()){
			return true;
		}
		else {
			JOptionPane.showConfirmDialog(null, "QQ号码要为数字", "提示",JOptionPane.DEFAULT_OPTION);
			return false;
		}
	}
	public Boolean passwordIsLaw(){
		String str=qqLogin.getPassWordTf().getText();
		if(str.equals("")){
			JOptionPane.showConfirmDialog(null, "密码不能为空", "提示",JOptionPane.DEFAULT_OPTION);
			return false;
		}
		else {
			return true;
		}
	}
	public Boolean ipIsLaw(){
		String regex0="(2[0-4]\\d)" + "|(25[0-5])";
	    String regex1="1\\d{2}";
	    String regex2="[1-9]\\d";
	    String regex3="\\d";
	    String regex="("+regex0+").("+regex1+").("+regex2+").("+regex3+")";
	    Pattern p=Pattern.compile(regex);
	    String str=qqLogin.getIpCb().getSelectedItem().toString();
	    Matcher m=p.matcher(str);
	    if(str.equals("")){
			JOptionPane.showConfirmDialog(null, "ip不能为空", "提示",JOptionPane.DEFAULT_OPTION);
			return false;
		}
	    else if(m.matches()){
			JOptionPane.showConfirmDialog(null, "ip不合格", "提示",JOptionPane.DEFAULT_OPTION);
			return false;
		}
		else{
			return true;
		}
		
	}
	public Boolean portIsLaw(){
		Pattern pattern = Pattern.compile("[0-9]*");
		String str=qqLogin.getPortTf().getText();
		Matcher isNum = pattern.matcher(str);
		if(str.equals("")){
			JOptionPane.showConfirmDialog(null, "端口不能为空", "提示",JOptionPane.DEFAULT_OPTION);
			return false;
		}
		else if(isNum.matches()){
			return true;
		}
		else {
			JOptionPane.showConfirmDialog(null, "端口要为数字", "提示",JOptionPane.DEFAULT_OPTION);
			return false;
		}
	}
	
	public void connect(){
		String port=qqLogin.getPortTf().getText();
		String ip=qqLogin.getIpCb().getSelectedItem().toString();
		try {
			socket=new Socket(ip,Integer.parseInt(port));
			oos=new ObjectOutputStream(socket.getOutputStream());
			ois=new ObjectInputStream(socket.getInputStream());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}
	public void sendPack(){
		String qqnum=qqLogin.getQqnumbercomobox().getSelectedItem().toString();
		String password=qqLogin.getPassWordTf().getText();
		QQpack qqpack=new QQpack();
		User user=new User();
		user.setSid(qqnum);
		user.setSpassword(password);
		qqpack.setFrom(user);
		qqpack.setType(PackType.login);
		try {
			oos.writeObject(qqpack);
		} catch (IOException e) {
			// TODO Auto-generated catch block 
			e.printStackTrace();
		}
	}
	public Object recievePack(){
		Object o=null;
		try {
			o=ois.readObject();
			return o; 
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return o; 
	}
}

⌨️ 快捷键说明

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