import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.time.*;
import java.time.format.*;
import java.util.*;
import java.util.List;
import javax.swing.*;
import javax.swing.GroupLayout.*;
import javax.swing.event.*;
import java.util.concurrent.*;
class Login extends JFrame {
class MSocket extends vMSocket{
public MSocket(Socket soc){
super(soc);
}
public void run(){ keep_receive(); }
public void keep_receive(){ }
}
//
public String IP;
public int port;
public String myName;
boolean login=false;
public String loginResults="NOT CONFORM";
public Socket soc;
public int haveTryTimes=0;
public final int MAXT_TRY_TIMES=10;
JTextField ipTf;
JTextField portTf;
JTextField nameTf;
JTextField pswdTf;
JLabel ipLb;
JLabel portLb;
JLabel nameLb;
JLabel pswdLb;
Scanner sci;
MSocket msoc;
//
Login() {
//login the Login, and comfirm form the Sever
create();
setUp();
mbind();
myLayout();
mshow();
}
void create(){
ipLb=new JLabel ("IP : ");
portLb=new JLabel("port : ");
nameLb=new JLabel("name : ");
pswdLb=new JLabel("pswd : ");
ipTf=new JTextField ();
portTf=new JTextField();
nameTf=new JTextField();
pswdTf=new JTextField();
}
void setUp(){
ipTf.setText("localhost");
portTf.setText("5566");
}
public void myLayout(){
super.setLayout(new GridLayout(0,2));
super.add(ipLb);
super.add(ipTf);
super.add(portLb);
super.add(portTf);
super.add(nameLb);
super.add(nameTf);
super.add(pswdLb);
super.add(pswdTf);
Font font= new Font("courier", Font.BOLD, 19);
for(Component cmp : super.getComponents())
cmp.setFont(font);
}
void mbind(){
class _i implements ActionListener{
public void actionPerformed(ActionEvent E){
haveTryTimes++;
if( haveTryTimes>MAXT_TRY_TIMES){
//System.exit(4);
setVisible(false);
}
IP= ipTf.getText();
String s=portTf.getText();
String pswd=pswdTf.getText();
port=Integer.parseInt(s);
myName=nameTf.getText();
try{
soc=new Socket(IP , port);
MSocket msoc=new MSocket(soc);
msoc.msend(myName+":"+pswd);
loginResults=msoc.receive();
System.out.println(" results");
if(loginResults.equals("CONFORM")){
login=true;
pswdTf.setEnabled(false);
System.out.println(" login CONFORM");
setVisible(false);
}else{
System.out.println(" loging NOT CONFORM");
}
} catch ( UnknownHostException e ) {
System.out.println("Can't find host.");
System.exit(1);
} catch ( IOException e ) {
System.out.println("Error connecting to host.");
System.exit(2);
}
if(login==true){
//System.exit(0);
setEnabled(false);
}
}
}
pswdTf.addActionListener(new _i());
}
public Socket getSocket(){
return soc;
}
public void mshow(){
super.setTitle("login in");
super.pack();
super.setVisible(true);
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
super.setBounds(0, 0, 500, 500);
}
public static void main(String[] args) {
Login c=new Login();
}
}