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

📄 server.java

📁 图书管理系统:用户管理
💻 JAVA
字号:
//服务端窗口
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.net.*;
import java.applet.*;
import java.io.*;
import java.util.*;
import java.text.*;
public class Server extends JFrame implements ActionListener{
	static final long serialVersionUID=80;
	TextArea text;
	JButton savebutton,openbutton,shutdownbutton;
	FileDialog fileSave;
	Dimension screenSize;
	Toolkit tool;
	Image myimage;
	JPanel panel;
	ServerSocket server=null;
	Container container;
	URL audiourl;
	AudioClip audio;
	SimpleDateFormat matter;
	Server(String s){
		super(s);
		setSize(330,250);
		setResizable(false);
		container=getContentPane();
		tool=getToolkit();
		URL url = getClass().getResource("/images/server.jpg");
		if(url!=null){
			myimage=tool.getImage(url);
			setIconImage(myimage);
		}
		try{
			  UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
		}
		catch(Exception e3){
			   JOptionPane.showMessageDialog(this,e3);
		}
		matter=new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
		panel=new JPanel(new FlowLayout(FlowLayout.CENTER));
		savebutton=new JButton("保存");
		openbutton=new JButton("启动");
		shutdownbutton=new JButton("关闭");
		panel.add(savebutton);
		panel.add(openbutton);
		panel.add(shutdownbutton);
		savebutton.addActionListener(this);
		openbutton.addActionListener(this);
		shutdownbutton.addActionListener(this);
		text=new TextArea(null,100,80,TextArea.SCROLLBARS_BOTH);
		text.setEditable(false);
		container.add(text,BorderLayout.CENTER);
		container.add(panel,BorderLayout.SOUTH);
		fileSave=new FileDialog(this,"保存用户记录",FileDialog.SAVE);
		fileSave.setVisible(false);
		Dimension frameSize=getSize();
		screenSize=Toolkit.getDefaultToolkit().getScreenSize();
		setLocation((screenSize.width - frameSize.width) / 2,(screenSize.height - frameSize.height) / 2);
		validate();
		addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				int n=JOptionPane.showConfirmDialog(null,"确定一定以及肯定退出服务器?","确认对话框",JOptionPane.YES_NO_OPTION);
				if(n==JOptionPane.YES_OPTION){
					audiourl=getClass().getResource("/sound/Bye.wav");
					if(audiourl!=null){
						audio=Applet.newAudioClip(audiourl);
						audio.play();
					}
					try{
						Thread.sleep(500);
					}
					catch(InterruptedException e1){
						
					}
					System.exit(0);
				}
			}
		});
		setVisible(true);
	}
	public void actionPerformed(ActionEvent e){
		if(e.getSource()==savebutton){
			fileSave.setVisible(true);
			if(fileSave.getFile()!=null){
				try{
					File file=new File(fileSave.getDirectory(),fileSave.getFile());
					FileWriter tofile=new FileWriter(file);
					BufferedWriter out=new BufferedWriter(tofile);
					out.write(text.getText(),0,text.getText().length());
					out.flush();
					out.close();tofile.close();
				}
				catch(IOException e1){
					
				}
			}
		}
		else if(e.getSource()==openbutton){
			if(server==null){
				try{
					server=new ServerSocket(4331);
				}
				catch(IOException e1){
					
				}
				audiourl=getClass().getResource("/sound/Hi.wav");
				if(audiourl!=null){
					audio=Applet.newAudioClip(audiourl);
					audio.play();
				}
				text.setText(matter.format(new Date())+"成功启动服务器"+"\n");
				new BaseThread(server,this).start();
				new Renew(this).start();
			}
		}
		else{
			int n=JOptionPane.showConfirmDialog(this,"确定一定以及肯定退出服务器?","确认对话框",JOptionPane.YES_NO_OPTION);
			if(n==JOptionPane.YES_OPTION){
				audiourl=getClass().getResource("/sound/Bye.wav");
				if(audiourl!=null){
					audio=Applet.newAudioClip(audiourl);
					audio.play();
				}
				try{
					Thread.sleep(500);
				}
				catch(InterruptedException e1){
					
				}
				System.exit(0);
			}
		}
	}
	public static void main(String args[]){
		new Server("服务端");
	}

}
//打开对外连接,等待客户连接
class BaseThread extends Thread{
	Socket socket=null;
	ServerSocket server;
	Server frame;
	TextArea text;
	
	BaseThread(ServerSocket server,Server frame){
		this.server=server;
		this.frame=frame;
		text=frame.text;
	}
	public void run(){
		while(true){
			try{
				socket=server.accept();
			}
			catch(IOException e1){
				text.append("正在等待客户!");
			}
			if(socket!=null){
				new ServerThread(socket,frame).start();
			}
			else{
				continue;
			}
		}
	}
}
//和客户交流信息的线程
class ServerThread extends Thread{
	Socket socket;
	Server serverJFrame;
	DataInputStream in;
	DataOutputStream out;
	String temp;
	String state;
	SimpleDateFormat matter;
	ServerThread(Socket socket,Server serverJFrame){
		this.socket=socket;
		this.serverJFrame=serverJFrame;
		matter=new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
		try{
			in=new DataInputStream(socket.getInputStream());
			out=new DataOutputStream(socket.getOutputStream());
		}
		catch(IOException e){
			
		}
	}
	
	public void run(){
		while(true){
			try{
				String s=in.readUTF();
				if(s.equals("need number")){
					int n=new Double(Math.random()*9000+1000).intValue();
					temp=String.valueOf(n);
					serverJFrame.text.append(matter.format(new Date())+socket.getInetAddress()+" 请求验证码 "+"\n");
					serverJFrame.text.append("发送验证码:"+temp+"到"+socket.getInetAddress()+"\n");
					out.writeUTF(temp);
				}
				else if(s.equals("pass")){
					state="pass";
					serverJFrame.text.append(matter.format(new Date())+socket.getInetAddress()+" 开始登陆 "+"\n");
					
				}
				else if(s.equals("Notpass")){
					int n=new Double(Math.random()*9000+1000).intValue();
					temp=String.valueOf(n);
					serverJFrame.text.append(matter.format(new Date())+socket.getInetAddress()+" 登陆失败 "+"\n");
					serverJFrame.text.append("发送验证码:"+temp+"到"+socket.getInetAddress()+"\n");
					out.writeUTF(temp);
					
				}
				else if(s.equals("cancel")){
					serverJFrame.text.append(matter.format(new Date())+socket.getInetAddress()+" 已经离开 "+"\n");
				}
				else{
					serverJFrame.text.append(matter.format(new Date())+socket.getInetAddress()+" 要求验证 "+"\n");
					if(s.equals(temp)){
						serverJFrame.text.append(matter.format(new Date())+socket.getInetAddress()+" 通过验证 "+"\n");
						out.writeUTF("pass");
					}
					else{
						serverJFrame.text.append(matter.format(new Date())+socket.getInetAddress()+" 验证失败 "+"\n");
						out.writeUTF("notpass");
					}
				}
			}
			catch(IOException e){
				if(state!=null&&state.equals("pass")){
					serverJFrame.text.append(matter.format(new Date())+socket.getInetAddress()+" 已登录数据库! "+"\n");
				}
				else{
					serverJFrame.text.append(matter.format(new Date())+socket.getInetAddress()+" 已离开! "+"\n");
				}
				break;
			}
		}
	}
}
class Renew extends Thread{
	Server frame;
	Renew(Server frame){
		this.frame=frame;
	}
	public void run(){
		File file=new File(frame.matter.format(new Date())+"record.dat");
		FileWriter tofile=null;
		BufferedWriter out=null;
		try{
			tofile=new FileWriter(file);
			out=new BufferedWriter(tofile);
		}
		catch(IOException e){
			
		}
		while(true){
			try{
				sleep(2000000);
			}
			catch(InterruptedException e){
				
			}
			if(frame.text.getText().length()!=0){
				try{
					out.write(frame.text.getText(),0,frame.text.getText().length());
					frame.text.setText(null);
					out.flush();
					
				}
				catch(IOException e1){
					
				}
			}
		}
	}
}

⌨️ 快捷键说明

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