Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package klientserwer;
- import java.io.*;
- import java.net.*;
- import java.util.*;
- public class MultiSerwer
- {
- /**
- *Wektor watkow obslugujacych klientow
- */
- Vector<KlientWatek> v = new Vector<KlientWatek>();
- /**
- *Metoda uruchamiajaca serwer
- */
- void runSerwer() throws IOException
- {
- //tworzenie gniazda serwera
- ServerSocket server = new ServerSocket(2222);
- System.out.println("Serwer uruchomiony ... ");
- while(true){
- //Akceptacja polaczenia;
- Socket socket = server.accept();
- System.out.println("Jest nowy klient!");
- //Tworzenie watku obsugujacego klienta do wektora
- KlientWatek kw = new KlientWatek(socket);
- //dodawanie watku do wektora klientow
- v.addElement(kw);
- }
- }
- /**
- *Metoda wysylajaca dane do wszystkich klientow w wektorze
- *@param data - tablica bajt�w z danymi.
- */
- void sendToAll(byte[] data){
- for(int i=0; i<v.size(); i++)
- v.elementAt(i).send(data);
- }
- /**
- *Glowna metoda programu
- * @param args
- */
- public static void main(String[] args)
- {
- try
- {
- new MultiSerwer().runSerwer();
- }
- catch(IOException e)
- {
- System.out.println(e);
- }
- }
- /**
- *Klasa dziedziczaca po Thread, obslugujaca klientow
- */
- class KlientWatek extends Thread
- {
- Socket socket;
- InputStream in;
- OutputStream out;
- /**
- *@param socket - zaakceptowanie polaczenie z klientem
- */
- KlientWatek(Socket socket)throws IOException
- {
- this.socket = socket;
- // pobieranie strumieni
- this.in = socket.getInputStream();
- this.out = socket.getOutputStream();
- //uruchamianie watku
- start();
- }
- /**
- *Nadpisana metoda w ciele ktorej znajduja sie instrukcje
- *wymagajace asynchronicznego wykonania
- */
- @Override
- public void run()
- {
- while(true)
- {
- try
- {
- int k = 0;
- StringBuffer sb = new StringBuffer();
- //czytanie ze strumienia
- while((k=in.read())!=-1 && k!='\n')
- sb.append((char)k);
- sendToAll((sb.toString()).getBytes());
- }
- catch(IOException e) { System.out.println(e);}
- }
- }
- /**
- *Metoda wysylajaca odpowiedz do klienta
- *
- *@param data - tablica bajtow z danymi
- */
- void send(byte[] data)
- {
- try
- {
- //wysylanie danych
- out.write(data);
- out.write("\r\n".getBytes());
- }
- catch(IOException e){System.out.println(e);}
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement