/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package cz.cvut.fel.pjv.cv8_2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.LinkedList; /** * * @author mudromar */ public class Server { private static LinkedList data = new LinkedList(); private static LinkedList list = new LinkedList(); public static void main(String[] args) throws IOException { int clientCount=0; ServerSocket ss = new ServerSocket(20000); System.out.println("Socket vytvoren"); while (clientCount<5) { Socket s = ss.accept(); System.out.println("Klient pripojen"); clientCount++; ServerProcess proc = new ServerProcess(data,s); Thread t = new Thread(proc); list.add(t); t.start(); } for (String clientData : data) { System.out.println(clientData); } } } /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package cz.cvut.fel.pjv.cv8_2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.util.LinkedList; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author mudromar */ public class ServerProcess implements Runnable { private LinkedList data; private Socket s; public ServerProcess(LinkedList data, Socket s) { this.data = data; this.s = s; } @Override public void run() { try (InputStream is = s.getInputStream(); OutputStream os = s.getOutputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); PrintWriter pw = new PrintWriter(os);) { String clientData = br.readLine(); System.out.println("Klient poslal:" + clientData); synchronized (data) { data.add(clientData); } pw.println("KONEC SPOJENI"); pw.flush(); synchronized (data) { for (String string : data) { pw.println(string); } } } catch (IOException ex) { Logger.getLogger(ServerProcess.class.getName()).log(Level.SEVERE, null, ex); } try { s.close(); } catch (IOException ex) { Logger.getLogger(ServerProcess.class.getName()).log(Level.SEVERE, null, ex); } } }