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

📄 simpleclient.java

📁 一个基于Java servelet的hotel broker 程序 实现access数据库访问
💻 JAVA
字号:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.StringTokenizer;

public class simpleclient extends JFrame  implements ActionListener {
	
	 JTextArea ta = new JTextArea(12,28);//display user options
    JTextField tf1 = new JTextField(10);// TextField for user login
    JTextField tf2 = new JTextField(29);//TextField for user options
    JButton b1 = new JButton("Login");
    JButton b2 = new JButton("Exit");
    JButton b3 = new JButton("Send");
    JLabel lab1 = new JLabel("UserID:");
    JLabel lab2 = new JLabel("Input Option:");
    List list = new List(10);
    JRadioButton rb1 = new JRadioButton("Talk to All other clients");
    JRadioButton rb2 = new JRadioButton("Talk to selected client");
    JRadioButton rb3 = new JRadioButton("Send User Option to the Broker",true);
    ButtonGroup bg = new ButtonGroup();
    JScrollPane sp = new JScrollPane(ta);
    JPanel p1 = new JPanel();
    JPanel p2 = new JPanel();
    JPanel p3 = new JPanel();
    JPanel p4 = new JPanel();

	//Add data member for the socket connection
    Socket socket;
    PrintStream ps;
    String name;
    String ip;
    
 public simpleclient()
    {
        super("Hotel Booking Broker Client");
        
          
          
        p1.add(lab1);
        p1.add(tf1);
        p1.add(b1);
        p1.add(b2);
        p2.add(lab2);
        p2.add(tf2);
        p2.add(b3);
        p3.setLayout(new BorderLayout());
        p3.add(list,BorderLayout.NORTH);
        p3.add(rb1,BorderLayout.CENTER);
        p3.add(rb2,BorderLayout.SOUTH);
        //p3.add(rb3,BorderLayout.WEST);
        bg.add(rb1);
        bg.add(rb2);
        bg.add(rb3);
        sp.getViewport().add(ta);
        p4.add(p3);
        p4.add(sp);
        p4.add(rb3);
        getContentPane().add(p1,BorderLayout.NORTH);
        getContentPane().add(p4,BorderLayout.CENTER);
        getContentPane().add(p2,BorderLayout.SOUTH);
        pack();
        //set to display in the center of the screen
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = this.getSize();
        if(frameSize.width > screenSize.width)
        {
            frameSize.width = screenSize.width;
        }
        if(frameSize.height > screenSize.height)
        {
            frameSize.height = screenSize.height;
        }
        setLocation((screenSize.width - frameSize.width)/2,
                    (screenSize.height - frameSize.height)/2); 
          
          
          //register all of the ActionListeners
        b1.addActionListener(this);
        b2.addActionListener(this);
        b3.addActionListener(this); 
                  
        setSize(490,350);
        setVisible(true);
        setResizable(false);
        
   
            }     
    ///add main method    
 public static void main(String[] args)
    {
        simpleclient appclient = new simpleclient();
    }	

//implement abstract methods 
 public void actionPerformed(ActionEvent e)
            {
            	
            	//connect to the server
            	 if(e.getActionCommand().equals("Login"))
            {
            	try
                {
                    socket = new Socket(InetAddress.getLocalHost(),7000);
                    if(socket != null)
                    {
                        StringBuffer msg = new StringBuffer("CONNECT:");//send broker the "CONNECT" message
                        name = tf1.getText();
                        ip = InetAddress.getLocalHost().toString();
                        msg.append(name+":"+ip);
                        ps = new PrintStream(socket.getOutputStream());
                        ps.println(msg);  //sent message to the server for authentication and authorization
                        ps.flush(); 
                        //ta.setText("");
                        ta.append(name+"Login suscessfull!"+"\n"); //ta is the text area for display user options
                        b1.setEnabled(false);
                        b2.setEnabled(true);
                        //启动客户端线程 听服务器端传来的信息
                     Thread t = new ClientListener(socket);
                     t.start();
                    }
                }
                catch(IOException ex)
                {
                    ta.append("Error: "+ex+"\n");
                }
            	
            	
            	}
           if(e.getActionCommand().equals("Exit"))
            {
                ps.println("QUIT:" + name);
                ps.flush();
               
                b1.setEnabled(true);
                b2.setEnabled(false);
            }
            else if(e.getActionCommand().equals("Send"))
            {
                StringBuffer msg = new StringBuffer("MSG:");
                //StringBuffer option = new StringBuffer("OPTION:");
                
                String info = name+":"+tf2.getText();

                if(rb3.isSelected())
                {
                    //option.append(tf2.getText());
                    ps.println(tf2.getText());
                    ps.flush();
                    tf2.setText("");
                }
                else 
                {
                	if (rb1.isSelected())
                    {
                    msg.append("BROAD:"+info);
                    
                    }
                    else
                    {
                	msg.append( list.getSelectedItem()+":"+info);
                    }
                    ps.println(msg);
                    ps.flush();
                    tf2.setText("");
                }
            }
   		
            
            
      }
            		
            		
         /////////   		///////////////
         
    ///对每一个连接到服务器的socket开启一个线程     
         
    class ClientListener extends Thread
    {
        Socket socket;
        BufferedReader br;
        PrintStream ps;
        String message;

        public ClientListener(Socket s)
        {
            try
            {
                socket = s;
                br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                ps = new PrintStream(socket.getOutputStream());
            }
            catch(IOException ex)
            {
                ta.append("Error: "+ex+"\n");
            }
        }

        public void run()
        {
            while(true)
            {
                try
                {
                    message = br.readLine();
                    if(message == null)
                        break;
                }
                catch(IOException ex)
                {
                    ta.append("Error-debug: "+ex+"\n");
                }
                
                StringTokenizer st = new StringTokenizer(message,":");
                String keyword = st.nextToken();
                //String userOption = st.nextToken();

                //Broker服务器端传来各种信息的处理
                if(keyword.equals("MENU")) //display the broker menu on the screen!
                {
                	String menuList = st.nextToken();
                    //String menuList = st.nextToken();
                    StringBuffer sb = new StringBuffer(menuList);
                    ta.append(sb+"\n");
                }  
                
                if(keyword.equals("OPTION"))
                {
                	  String serverRespond = st.nextToken();
                	  StringBuffer sb = new StringBuffer(serverRespond);
                      ta.append(sb+"\n");
                }
               
///////////////////////////////////////////////////////////////////////////////
                if(keyword.equals("PEOPLE")) //refresh the client list
                {
                    list.removeAll();
                    while(st.hasMoreTokens())
                    {
                        String user = st.nextToken();
                        list.add(user);
                    }
                }
                else if(keyword.equals("MSG")) //messages from other clients as well as server.
                {   
                	
                		String broadcast = st.nextToken();
                        String user = st.nextToken();
                        StringBuffer sb = new StringBuffer(user+st.nextToken("\0"));
                        ta.append(sb+"\n");
                
                    
                }
                else if(keyword.equals("QUIT"))
                {
                    String who = st.nextToken();
                    if(who.equals("Server"))
                    {
                        closeSocket();
                        ta.append("Server has been shut down!" + "\n");
                        list.removeAll();
                        b2.setEnabled(false);
                    }
                    else
                    {
                        closeSocket();
                        b1.setEnabled(true);
                        b2.setEnabled(false);
                        list.removeAll();
                        ta.append(name + "Exit the system!" + "\n");
                    }
                    break;
                }
               
            }
        }
    }
   
   ////////
   public void closeSocket()
    {
        if(socket != null)
        {
            try
            {
                socket.close();
            }
            catch (IOException ex)
            {
                ta.append("Error: " + ex + "\n");
            }
        }
    }        
        
}

⌨️ 快捷键说明

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