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

📄 simpleserversocket.java

📁 一个基于Java servelet的hotel broker 程序 实现access数据库访问
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.util.*;
import java.io.*;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
import java.util.Hashtable;

public class simpleserversocket extends JFrame implements ActionListener {
	
	
	JLabel lab1 = new JLabel("Users Online");
    JLabel lab2 = new JLabel("Message");
    JTextArea ta = new JTextArea(9,30);
    java.awt.List list = new java.awt.List(9);
    JTextField tf = new JTextField(24);
    JButton b = new JButton("Send");
    JScrollPane sp = new JScrollPane(ta);
    JPanel p1 = new JPanel();
    JPanel p2 = new JPanel();
    JPanel p3 = new JPanel();
    
    ServerSocket serverSocket;
    Socket socket;
    ArrayList array = new ArrayList(); // the connected client list
    int connect;
    
    //ArrayList roomType = new ArrayList();
	
    public simpleserversocket()
    {
        super("Hotel Booking Broker");
        
        
        sp.getViewport().add(ta);
        p1.setLayout(new BorderLayout());
        p3.add(lab1);
        p1.add(p3,BorderLayout.NORTH);
        p1.add(list,BorderLayout.SOUTH);
        p2.add(lab2);
        p2.add(tf);
        p2.add(b);
        getContentPane().add(sp,BorderLayout.NORTH);
        getContentPane().add(p1,BorderLayout.CENTER);
        getContentPane().add(p2,BorderLayout.SOUTH);
        pack();
        
        
        
        //display the broker server 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);
        
        //add button to handle events
         b.addActionListener(this);
         
        setSize(450,450);
        setVisible(true);
        setResizable(false);
        
        
        //server starts to listen ports
        
         if(serverSocket == null)
                {
                    try
                    {
                        serverSocket = new ServerSocket(7000);
                        ta.append("SYSTEM:" + " Hotel Booking Broker "
                                  + " started successfully......\n");
                    }
                    catch(IOException ex)
                    {
                        ta.append("SYSTEM:"+" Hotel Booking Broker "
                                  +" started unsuccessfully.....\n");
                        ex.printStackTrace();
                    }
                }
                else
                {
                    ta.append("SYSTEM:"+" Hotel Booking Broker "
                              +" started successfully......\n");
                }
     
     
     ////////////////////////////////////////////////////
     
     
     while(true)
            {
                if(array.size() <= 10)
                {
                    try
                    {
                        socket = serverSocket.accept();
                        ta.append("One Client login successfully:\n");
                    }
                    catch(IOException ex)
                    {
                        ta.append("SYSTEM: "+ex+"\n");
                    }
                   /////////////////////////////////////////////////////
                   //Create client thread,one thread for one client only
                  Client c = new Client(socket); //Client class extends thread
                  array.add(c);
                  c.start();
                  /////////////////////////////////////////////////////
                }
                else
                {
                    ta.append("SYSTEM:"+" Hotel Booking Broker "
                              +" has been fully connected,please try later!\n");
                }
            } 
    }
    
    /////////////////////////////////////////////////////////////
    
     
    class Client extends Thread //thread class respond to User client
    {
        String name;
        String ip;
        String ipAddress;
        
        Socket socket;
        //Socket socket_hotel; //for set up connection with the user selected hotel
        
        BufferedReader br;
        PrintStream ps;
 
        public Client(Socket s)
        {
            try
            {
                socket = s;
                br = new BufferedReader(new InputStreamReader(s.getInputStream()));
                ps = new PrintStream(s.getOutputStream());
            }
            catch (IOException ex)
            {
                ta.append("SYSTEM: "+ex+"\n");
            }
        }

        public void run()
        {
            String info;
            try
            {
                while(true)
                {
                    info = br.readLine();
                    if(info == null)
                        break;
                    StringTokenizer st = new StringTokenizer(info, ":");
                    String keyword = st.nextToken();

                   //process messages sent from client
                
                    if (keyword.equals("CONNECT")) //header CONNECT refers to the first communication
                    {
                        name = st.nextToken();
                        ip = st.nextToken();
                        ipAddress = ip.substring(ip.indexOf("/")+1); //???????
                        ta.append("SYSTEM: " + name + "/"
                                  + ipAddress +" connected to the system!\n");
                        list.add(name + ":" + ip
                                 +":login successfully");
                            refreshClientList(); 
                       //implement the broker menu list here and send it to the connected client
                        
                        ps.println(new StringBuffer("MENU:"+"1.Cities available"));//Send client the menu message.
            	        //ps.flush();
                        ps.println(new StringBuffer("MENU:"+"2.Book a room"));//Send client the menu message.
            	        //ps.flush();	
            	        ps.println(new StringBuffer("MENU:"+"3.About us"));
            	        ps.println(new StringBuffer("MENU:"+"4.Hotel Vacancy Request"));
            	        ps.println(new StringBuffer("MENU:"+"5.Hotels available"));
            	        ps.println(new StringBuffer("MENU:"+"----------------------------"));//Send client the menu message.
            	        ps.flush();	
            	        	
                    }
                     	 	
                    	if(keyword.equals ("1"))
                    	{   
                    		List<String> city = getCity();
                            Iterator it = city.iterator();
                    		while(it.hasNext())
                    		{
                    		  ps.println(new StringBuffer("OPTION:" + it.next()));
                    		}
                    		ps.println(new StringBuffer("OPTION:" + "-----------------------"));
                    		ps.println(new StringBuffer("OPTION:" + "Input 0 to go back the main menu..."));
                    		ps.println(new StringBuffer("OPTION:" + "-----------------------"));
            	            ps.flush();
            	            
            	            String userInput = br.readLine();
            	            if(userInput != null)
            	            {
            	               ps.println(new StringBuffer("MENU:"+"1.Cities available"));//Send client the menu message.
                               ps.println(new StringBuffer("MENU:"+"2.Book a room"));//Send client the menu message.	
            	               ps.println(new StringBuffer("MENU:"+"3.About us"));
            	               ps.println(new StringBuffer("MENU:"+"4.Hotel Vacancy Request"));
            	               ps.println(new StringBuffer("MENU:"+"5.Hotels available"));
            	               ps.println(new StringBuffer("MENU:"+"----------------------------"));//Send client the menu message.
            	               ps.flush();		
            	            }	
            	            
            	            continue;	
                    	}   
                    	if(keyword.equals ("2"))
                    	{
                    		ps.println(new StringBuffer("OPTION:" +"Please choose a city:"));
                    		
                    		ArrayList<String>city = getCity();
                            Iterator its = city.iterator();
                    		while(its.hasNext())
                    		{
                    		  ps.println(new StringBuffer("OPTION:" + its.next()));
                    		}
                    		ps.println(new StringBuffer("OPTION:" + "-----------------------"));
            	            ps.flush();
            	            
            	            String userSelectedCity = br.readLine();
            	            
            	            ta.append("User input:" + userSelectedCity + "\n");
            	            if(userSelectedCity != null)
            	            {
            	               ps.println(new StringBuffer("OPTION:" +"Please choose a hotel:"));
            	            	
            	               ArrayList<String> hotelList = getHotel(userSelectedCity);
                    		   Iterator itss = hotelList.iterator();
                    		   
                    		   while(itss.hasNext())
                               {
                    		     ps.println(new StringBuffer("OPTION:" + itss.next()));
                    		     ps.flush();
                    		   }
                    		   ps.println(new StringBuffer("OPTION:" + "-----------------------"));
            	               ps.flush();
            	               
            	               String userSelectedHotel = br.readLine();
            	               if(userSelectedHotel != null)
            	               {
            	               	 ps.println(new StringBuffer("OPTION:" + "Connecting to "+ userSelectedHotel + " hotel database..."));
            	                 ps.flush();
                    		     int port = getPortNumber(userSelectedCity,userSelectedHotel);
                    	         ArrayList<String> room_type = HotelConnector(port,"TYPE");
                    	         //Socket hotel_socket = HotelConnector(port);
                    	         //BufferedReader br_hotel = new BufferedReader(new InputStreamReader(hotel_socket.getInputStream()));
                                 //PrintStream ps_hotel = new PrintStream(hotel_socket.getOutputStream());
                    	         ps.println(new StringBuffer("OPTION:" + "Connection established successfully!"));
                    	         ps.println(new StringBuffer("OPTION:" + "Welcome to " + userSelectedHotel + " hotel..."));
            	                 ps.println(new StringBuffer("OPTION:" + "-----------------------"));
            	                 
            	                 ps.println(new StringBuffer("OPTION:" + "Please select room type:"));
            	                 
            	                 Iterator itsss = room_type.iterator();
            	                 while(itsss.hasNext())
                                 {
                    		       ps.println(new StringBuffer("OPTION:" + itsss.next()));
                    		       ps.println(new StringBuffer("OPTION:" + "-----------------------"));
                    		     }
                    		     //ps.println(new StringBuffer("OPTION:" + "-----------------------"));
            	                 ps.flush();
            	                 
            	                 String userSelectedRoomType = br.readLine();
            	                 
            	                 if(userSelectedRoomType != null)
            	                 {
            	                 	ps.println(new StringBuffer("OPTION:" + "Please wait for processing your request..."));
                      	            ps.println(new StringBuffer("OPTION:" + "-----------------------"));
            	                    ps.flush();
            	                    
            	                    ArrayList<String> empty_room = HotelConnector(port,userSelectedRoomType);
            	                    
            	                    int number = empty_room.size();
                    	            ps.println(new StringBuffer("OPTION:" + "We have " + number +" "+ userSelectedRoomType + " rooms empty now"));
                    	      
            	                    ps.println(new StringBuffer("OPTION:" + "-----------------------"));
            	                    ps.println(new StringBuffer("OPTION:" + "Which one do you want to book?"));
            	                    ps.flush();
            	                    
            	                    Iterator itssss = empty_room.iterator();

⌨️ 快捷键说明

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