⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientlogin.java

📁 实现PKI/CA的数字签名部分
💻 JAVA
字号:
package dssclient;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.StringTokenizer;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;


public class ClientLogin extends JFrame implements ActionListener{
	//组件定义
	JLabel namelabel, iplabel,pswdlabel, portlabel;
	JTextField tfname, tfip, tfport;
	JPasswordField tfpswd;
	JButton regbutton,logbutton, exitbutton;
	//网络接口定义
	Socket socket = null;
	BufferedInputStream in;
	PrintStream out;
	byte[] data = new byte[512];
	static String ENC = "GB2312";
	String username = new String();
	String userpswd = new String();
	//网格布局定义
	void buildConstraints(GridBagConstraints grid,int gx,int gy,int gw,int gh,int wx,int wy){
		grid.gridx = gx;
		grid.gridy = gy;
		grid.gridwidth = gw;
		grid.gridheight = gh;
		grid.weightx = wx;
		grid.weighty = wy;
	}

	public ClientLogin() {
		super("数字签名系统登录");  //设置标题
		try {
			ClientJbInit();
		}
		catch(Exception e) {
			e.printStackTrace();
		}
		
	}
	
	public void actionPerformed(ActionEvent e){
		if(e.getActionCommand() == "登录"){
			if(tfname.getText().equals(""))
				JOptionPane.showMessageDialog(this,"用户不能为空","确定",JOptionPane.INFORMATION_MESSAGE);
			else if(tfip.getText().equals("")||tfport.getText().equals(""))
				JOptionPane.showMessageDialog(this,"服务器地址和服务器端口不能为空","确定",JOptionPane.INFORMATION_MESSAGE);
			else if(socket == null){
				try{
					String userinfo = "INFO:"+tfname.getText()+":"+new String(tfpswd.getPassword())+":"+InetAddress.getLocalHost().toString()+":";
					socket = new Socket(tfip.getText(),Integer.parseInt(tfport.getText()));                           
					out = new PrintStream(socket.getOutputStream());
					in = new BufferedInputStream(socket.getInputStream());
					
					out.println(userinfo); //发送到socket上 (ip 和 端口)
					out.flush();
					
					in.read(data);//从socket上 (ip 和 端口)的到数据
					String str = new String(data,ENC); //得到数据
				    StringTokenizer str1 = new StringTokenizer(str,":");
				    String recall = new String();
				    recall = str1.nextToken();
				    
				    if(recall.equals("SUC")){
						this.dispose();
					    ListUser td = new ListUser(tfname.getText(),socket);
						td.setVisible(true);
					}
				    else if(recall.equals("REFUSE")){
						JOptionPane.showMessageDialog(this,"对不起,用户名或密码不正确!","确定",JOptionPane.INFORMATION_MESSAGE);
						socket.close();
						socket = null;
					}
				    else if(recall.equals("REFUSE")){
						JOptionPane.showMessageDialog(this,"对不起,用户名或密码不正确!","确定",JOptionPane.INFORMATION_MESSAGE);
						socket.close();
						socket = null;
					}
				    else{
						JOptionPane.showMessageDialog(this,"对不起,连接不成功!","确定",JOptionPane.INFORMATION_MESSAGE);
						socket.close();
						socket=null;
					} 
				}catch(IOException ex){
					System.out.println("Error:"+ex);
				
			}
			
		}
		
	}
		
		else if(e.getActionCommand()=="关闭"){
			this.dispose();
			System.exit(0);
		}
		else if(e.getActionCommand()=="注册"){
			Register rg = new Register();
			rg.show();                      
			
		}
	}
	
	void sendinfo(String s){
		try {
			socket = new Socket(tfip.getText(),Integer.parseInt(tfport.getText()));
			out= new PrintStream(socket.getOutputStream());
			in = new BufferedInputStream(socket.getInputStream());								
		} catch (NumberFormatException e1) {	
			e1.printStackTrace();
		} catch (UnknownHostException e1) {
			e1.printStackTrace();
		} catch (IOException e1) {	
			e1.printStackTrace();
		}  
		out.println(s);
		out.flush();     	
    }
	
	private void ClientJbInit() throws Exception {
		setSize(300,200);        //设置大小
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口时, 程序也结束
		GridBagLayout gridbag = new GridBagLayout();     //实例化一个布局管理器 gridbag	
		JPanel pane = new JPanel(); 				     //实例化一个面板 pane
		pane.setLayout(gridbag);                         //将布局管理器 gridbag 应用于 面板 pane 上
		GridBagConstraints constraints = new GridBagConstraints(); //创建GridBagConstratints的一个实例
		//用户标签  
		buildConstraints(constraints,0,1,1,1,0,20);
		constraints.fill = GridBagConstraints.NONE;      //组件的fill约束
		constraints.anchor = GridBagConstraints.CENTER;  //组件的anchor约束
		namelabel = new JLabel("用户:",JLabel.CENTER);
		gridbag.setConstraints(namelabel,constraints);   //组件和约束限制
		pane.add(namelabel);
		//用户
		buildConstraints(constraints,1,1,1,1,0,20);
		constraints.fill = GridBagConstraints.HORIZONTAL;
		tfname = new JTextField();
		gridbag.setConstraints(tfname,constraints);
		pane.add(tfname);
		//IP地址标签
		buildConstraints(constraints,2,1,1,1,0,20);
		constraints.fill = GridBagConstraints.NONE;
		constraints.anchor = GridBagConstraints.CENTER;
		iplabel = new JLabel("ip:",JLabel.CENTER);
		gridbag.setConstraints(iplabel,constraints);
		pane.add(iplabel);
		//IP地址
		buildConstraints(constraints,3,1,1,1,0,20);
		constraints.fill = GridBagConstraints.HORIZONTAL;
		tfip = new JTextField("localhost");
		gridbag.setConstraints(tfip,constraints);
		pane.add(tfip);
		//密码标签 
		buildConstraints(constraints,0,2,1,1,0,20);
		constraints.fill = GridBagConstraints.NONE;
		pswdlabel = new JLabel("密码:",JLabel.CENTER);
		gridbag.setConstraints(pswdlabel,constraints);
		pane.add(pswdlabel);
		//密码
		buildConstraints(constraints,1,2,1,1,0,20);
		constraints.fill = GridBagConstraints.HORIZONTAL;
		tfpswd = new JPasswordField();
		gridbag.setConstraints(tfpswd,constraints);
		pane.add(tfpswd);
		//端口标签 
		buildConstraints(constraints,2,2,1,1,0,20);
		constraints.fill = GridBagConstraints.NONE;
		portlabel = new JLabel("端口:",JLabel.LEFT);
		gridbag.setConstraints(portlabel,constraints);
		pane.add(portlabel);	
		//端口	
		buildConstraints(constraints,3,2,1,1,0,20);
		constraints.fill = GridBagConstraints.HORIZONTAL;
		tfport = new JTextField("8080");
		gridbag.setConstraints(tfport,constraints);
		pane.add(tfport);
		//注册
	    buildConstraints(constraints,1,3,1,1,25,0);
	    constraints.fill = GridBagConstraints.NONE;
	    regbutton = new JButton("注册");
	    regbutton.addActionListener(this);
	    gridbag.setConstraints(regbutton,constraints);
	    pane.add(regbutton);				
	    //登录
		buildConstraints(constraints,2,3,1,1,25,0);
		constraints.fill = GridBagConstraints.NONE;
		logbutton = new JButton("登录");
		logbutton.addActionListener(this);
		gridbag.setConstraints(logbutton,constraints);
		pane.add(logbutton);
		//退出
		buildConstraints(constraints,3,3,1,1,25,0);
		constraints.fill = GridBagConstraints.NONE;
		exitbutton = new JButton("关闭");
		exitbutton.addActionListener(this);
		gridbag.setConstraints(exitbutton,constraints);
		pane.add(exitbutton);
		setContentPane(pane);	
	}
	
	public static void main(String args[]) {
		ClientLogin client = new ClientLogin();
		try {
			SwingUtilities.updateComponentTreeUI(client);
		}catch(Exception e){
		}
		client.show();
	}
	
}

⌨️ 快捷键说明

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