VasilM

simple_server_

May 29th, 2013
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.48 KB | None | 0 0
  1. import java.net.*;
  2. import java.io.*;
  3. import java.text.*;
  4. import java.util.*;
  5.  
  6. // Нишка, обслужваща клиентската заявка
  7.  
  8. public class ClientHandler extends Thread  {
  9.     protected SimpleDateFormat sdf;  // Съдържа текущата дата
  10.     protected Socket socket;         // Socket - за комуникация с клиента
  11.     protected Vector threadPull;     // За поддържане на пул от обслужваните нишки
  12.    
  13.     public ClientHandler(Socket incoming, Vector threadPull) {
  14.         socket = incoming;
  15.         this.threadPull = threadPull;
  16.         sdf = new SimpleDateFormat("dd/MM/yyyy  hh:mm:ss");
  17.         System.out.println ("New thread");
  18.         // Включване на нишката в пула
  19.         threadPull.add(this);      
  20.     }
  21.    
  22.     public void run() {
  23.         String outStr;
  24.         System.out.println("Starting thread!");
  25.        
  26.         try {
  27.             // Входен символен поток за сокета
  28.             BufferedReader in
  29.                 = new BufferedReader(
  30.                     new InputStreamReader(
  31.                         socket.getInputStream()));
  32.             // Изходен символен поток за сокета
  33.             PrintWriter out
  34.                 = new PrintWriter(
  35.                     new OutputStreamWriter(
  36.                         socket.getOutputStream()));
  37.                        
  38.             out.println("Hello! ...");
  39.             out.println("Enter BYE to exit.");
  40.             out.flush();
  41.            
  42.             while (true) {
  43.                 String str = in.readLine();
  44.                 System.out.println("From client:" + str);
  45.                 if (str == null) {
  46.                     break;
  47.                 } else {
  48.                     outStr = "Now is " + sdf.format(new Date());
  49.                     out.println("Echo: " + outStr);
  50.                     out.flush();
  51.                     // Обработката на заявката продължава до постъпване на низ "BYE"
  52.                     if (str.trim().equals("BYE"))
  53.                         break;
  54.                     }
  55.             }
  56.             socket.close();
  57.         } catch (IOException e) { e.printStackTrace();}
  58.         finally {
  59.             // Изключване на нишката от пула на обслужвани нишки
  60.             threadPull.remove(this);
  61.         }
  62.     }
  63. }
  64.  
  65.  
  66.  
  67. /**
  68.  * @(#)ServerExample.java
  69.  *
  70.  * ServerExample application
  71.  *
  72.  * @author
  73.  * @version 1.00 2008/5/25
  74.  */
  75.  import java.net.*;
  76.  import java.io.*;
  77.  import java.util.*;
  78.  /***************************************************************************/
  79.  /* Примерна задача за контролна работа по CSCB 302 "Programirane na Java " */
  80.  /* Сървърна част                                                           */
  81.  /***************************************************************************/
  82. public class ServerExample {
  83.     static final int SERVER_PORT = 3333;
  84.     static ServerSocket serverSocket;
  85.     static Vector<ClientHandler> threadPull = new Vector<ClientHandler>();
  86.  
  87.     public static void main(String[] args) {   
  88.         try{
  89.             // Създаване на сървърен сокет - приложението "слуша" за постъпване на заявки по порт SERVER_PORT
  90.             serverSocket = new ServerSocket(SERVER_PORT);
  91.             System.out.println("Server is started!");          
  92.             while (true) {
  93.                 // Получаване на заявка - създаване на socket
  94.                 Socket incoming = serverSocket.accept();               
  95.                 System.out.println("New client accepted!");
  96.                 // Създавне и стартиране на нишка, обслужваща клиентската заявка
  97.                 (new ClientHandler(incoming, threadPull)).start();
  98.             }      
  99.         } catch (Exception e) {
  100.             e.printStackTrace();
  101.         }
  102.  
  103.     }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment