avatar
Untitled

Guest 146 11th Oct, 2024

MARKUP 2.11 KB
                                           
                         import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class MultiServer {

    List<ClientThread> clientList= new ArrayList<>();

    void runServer() throws IOException {
        ServerSocket server = new ServerSocket(2000);

        System.out.println("Server started");

        while(true) {
            Socket socket = server.accept();
            System.out.println("New client ");

            ClientThread thread = new ClientThread(socket);
            clientList.add(thread);
        }
    }
    void sendToAll(String data){
        clientList.forEach(t-> t.send(data));
    }
    public static void main(String[] args) {
        try{
            new MultiServer().runServer();
        }   catch (IOException e) {
            System.out.println(e);
        }
    }
    class ClientThread extends Thread {
        Socket socket;
        BufferedReader in;
        PrintStream out;

        ClientThread(Socket socket) throws IOException {
            this.socket = socket;
            this.in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            this.out = new PrintStream(socket.getOutputStream());
            start();
        }

        public void run() {

            try {
                while (isInterrupted() == false) {
                    String data = in.readLine();

                    sendToAll(data);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    System.in.close();
                    System.out.close();
                    socket.close();
                } catch (IOException e) {
                    System.err.println("Problem z zamknięciem strumieni lub połączenia");
                    e.printStackTrace();
                }
            }
        }



        void send(String data) {
            System.out.println(data);
        }
    }
}
                      
                                       
To share this paste please copy this url and send to your friends
RAW Paste Data
Recent Pastes
Ta strona używa plików cookie w celu usprawnienia i ułatwienia dostępu do serwisu oraz prowadzenia danych statystycznych. Dalsze korzystanie z tej witryny oznacza akceptację tego stanu rzeczy.
Wykorzystywanie plików Cookie
Jak wyłączyć cookies?
ROZUMIEM