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

📄 server.java

📁 一个小型的聊天软件源码,用JAVA编译,方便朋友们更了解JAVA语言
💻 JAVA
字号:
// Fig. 24.5: Server.java
// Set up a Server that will receive a connection from a client, send 
// a string to the client, and close the connection.
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Server extends JFrame implements ActionListener
{
   private JTextField enterField; 
   private JTextArea displayArea; 
   //private ObjectOutputStream output;
   //private ObjectInputStream input; 
   private BufferedReader input;
   private PrintWriter output;
   private ServerSocket server; 
   private Socket conn; 
   private int counter = 1; 

   // set up GUI
   public Server() {
      super( "Server" );

      enterField = new JTextField();
      enterField.setEditable( false );
      enterField.addActionListener(this);

      add( enterField, BorderLayout.NORTH );

      displayArea = new JTextArea();
      add( new JScrollPane( displayArea ), BorderLayout.CENTER );

      setSize( 300, 450 ); 
      setVisible( true ); 
   } 
   
   public void actionPerformed( ActionEvent event )
   {
      sendData( enterField.getText() );
      enterField.setText( "" );
   } 
   

   public void runServer()
   {
      try
      {
         server = new ServerSocket( 12345 ); 

         while ( true ) {
            try {
      	       displayArea.append( "Waiting for connection\n" );
               conn = server.accept();
               displayArea.append( "Connection " + counter + " received from: " +
                                   conn.getInetAddress().getHostName() );

               // get streams to send and receive data
               //input = new ObjectInputStream( connection.getInputStream() );
               //output = new ObjectOutputStream( connection.getOutputStream() );
               //output.flush(); // flush output buffer to send header information
               input = new BufferedReader(new InputStreamReader(conn.getInputStream()));
               output = new PrintWriter(conn.getOutputStream());
               displayArea.append( "\nGot I/O streams\n" );

               processConnection(); 
            } 
            catch ( EOFException eofException ) 
            {
               displayArea.append( "\nServer terminated connection" );
            }
            finally 
            {
               closeConnection(); 
               counter++;
            }
         }
      }
      catch ( IOException ioException ) 
      {
         ioException.printStackTrace();
      }
   }

   // process connection with client
   private void processConnection() throws IOException
   {
      String message = "Connection successful";
      sendData( message ); 

      enterField.setEditable( true );

      do 
      { 
         try
         {
            //message = ( String ) input.readObject();
            message = input.readLine();
            displayArea.append( "\n" + message );
         }
         catch ( Exception ex ) 
         {
            displayArea.append( "\nUnknown object type received" );
         }

      } while ( !message.equals( "CLIENT>>> END" ) );
   } 

   private void closeConnection() 
   {
      displayArea.append( "\nTerminating connection\n" );
      enterField.setEditable( false ); 

      try 
      {
         output.close();
         input.close(); 
         conn.close();
      }
      catch ( IOException ioException ) 
      {
         ioException.printStackTrace();
      }
   } 

   // send message to client
   private void sendData( String message )
   {
      try
      {
         //output.writeObject( "SERVER>>> " + message );
         output.println("SERVER>>> " + message);
         output.flush();
         displayArea.append( "\nSERVER>>> " + message );
      }
      catch ( Exception ioException ) 
      {
         displayArea.append( "\nError writing object" );
      }
   }
}

⌨️ 快捷键说明

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