Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.net.*;
- import java.io.*;
- import java.text.*;
- import java.util.*;
- // Нишка, обслужваща клиентската заявка
- public class ClientHandler extends Thread {
- protected SimpleDateFormat sdf; // Съдържа текущата дата
- protected Socket socket; // Socket - за комуникация с клиента
- protected Vector threadPull; // За поддържане на пул от обслужваните нишки
- public ClientHandler(Socket incoming, Vector threadPull) {
- socket = incoming;
- this.threadPull = threadPull;
- sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
- System.out.println ("New thread");
- // Включване на нишката в пула
- threadPull.add(this);
- }
- public void run() {
- String outStr;
- System.out.println("Starting thread!");
- try {
- // Входен символен поток за сокета
- BufferedReader in
- = new BufferedReader(
- new InputStreamReader(
- socket.getInputStream()));
- // Изходен символен поток за сокета
- PrintWriter out
- = new PrintWriter(
- new OutputStreamWriter(
- socket.getOutputStream()));
- out.println("Hello! ...");
- out.println("Enter BYE to exit.");
- out.flush();
- while (true) {
- String str = in.readLine();
- System.out.println("From client:" + str);
- if (str == null) {
- break;
- } else {
- outStr = "Now is " + sdf.format(new Date());
- out.println("Echo: " + outStr);
- out.flush();
- // Обработката на заявката продължава до постъпване на низ "BYE"
- if (str.trim().equals("BYE"))
- break;
- }
- }
- socket.close();
- } catch (IOException e) { e.printStackTrace();}
- finally {
- // Изключване на нишката от пула на обслужвани нишки
- threadPull.remove(this);
- }
- }
- }
- /**
- * @(#)ServerExample.java
- *
- * ServerExample application
- *
- * @author
- * @version 1.00 2008/5/25
- */
- import java.net.*;
- import java.io.*;
- import java.util.*;
- /***************************************************************************/
- /* Примерна задача за контролна работа по CSCB 302 "Programirane na Java " */
- /* Сървърна част */
- /***************************************************************************/
- public class ServerExample {
- static final int SERVER_PORT = 3333;
- static ServerSocket serverSocket;
- static Vector<ClientHandler> threadPull = new Vector<ClientHandler>();
- public static void main(String[] args) {
- try{
- // Създаване на сървърен сокет - приложението "слуша" за постъпване на заявки по порт SERVER_PORT
- serverSocket = new ServerSocket(SERVER_PORT);
- System.out.println("Server is started!");
- while (true) {
- // Получаване на заявка - създаване на socket
- Socket incoming = serverSocket.accept();
- System.out.println("New client accepted!");
- // Създавне и стартиране на нишка, обслужваща клиентската заявка
- (new ClientHandler(incoming, threadPull)).start();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment