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 + -
显示快捷键?