java 聊天程序(客户端)

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();
    }
}
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值