Advertisement
Guest User

Untitled

a guest
Apr 27th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. package klientserwer;
  2.  
  3. import java.io.*;
  4. import java.net.*;
  5. import java.util.*;
  6.  
  7. public class MultiSerwer
  8. {
  9. /**
  10. *Wektor watkow obslugujacych klientow
  11. */
  12. Vector<KlientWatek> v = new Vector<KlientWatek>();
  13.  
  14. /**
  15. *Metoda uruchamiajaca serwer
  16. */
  17.  
  18. void runSerwer() throws IOException
  19. {
  20. //tworzenie gniazda serwera
  21. ServerSocket server = new ServerSocket(2222);
  22.  
  23. System.out.println("Serwer uruchomiony ... ");
  24.  
  25. while(true){
  26.  
  27. //Akceptacja polaczenia;
  28. Socket socket = server.accept();
  29. System.out.println("Jest nowy klient!");
  30.  
  31. //Tworzenie watku obsugujacego klienta do wektora
  32. KlientWatek kw = new KlientWatek(socket);
  33. //dodawanie watku do wektora klientow
  34. v.addElement(kw);
  35.  
  36. }
  37.  
  38. }
  39.  
  40. /**
  41. *Metoda wysylajaca dane do wszystkich klientow w wektorze
  42. *@param data - tablica bajt�w z danymi.
  43. */
  44.  
  45. void sendToAll(byte[] data){
  46. for(int i=0; i<v.size(); i++)
  47. v.elementAt(i).send(data);
  48. }
  49.  
  50. /**
  51. *Glowna metoda programu
  52. * @param args
  53. */
  54.  
  55. public static void main(String[] args)
  56. {
  57. try
  58. {
  59. new MultiSerwer().runSerwer();
  60. }
  61. catch(IOException e)
  62. {
  63. System.out.println(e);
  64. }
  65. }
  66.  
  67. /**
  68. *Klasa dziedziczaca po Thread, obslugujaca klientow
  69. */
  70.  
  71. class KlientWatek extends Thread
  72. {
  73.  
  74. Socket socket;
  75. InputStream in;
  76. OutputStream out;
  77.  
  78. /**
  79. *@param socket - zaakceptowanie polaczenie z klientem
  80. */
  81.  
  82. KlientWatek(Socket socket)throws IOException
  83. {
  84.  
  85. this.socket = socket;
  86.  
  87. // pobieranie strumieni
  88. this.in = socket.getInputStream();
  89. this.out = socket.getOutputStream();
  90.  
  91. //uruchamianie watku
  92. start();
  93. }
  94.  
  95. /**
  96. *Nadpisana metoda w ciele ktorej znajduja sie instrukcje
  97. *wymagajace asynchronicznego wykonania
  98. */
  99.  
  100. @Override
  101. public void run()
  102. {
  103.  
  104. while(true)
  105. {
  106. try
  107. {
  108. int k = 0;
  109. StringBuffer sb = new StringBuffer();
  110. //czytanie ze strumienia
  111. while((k=in.read())!=-1 && k!='\n')
  112. sb.append((char)k);
  113.  
  114. sendToAll((sb.toString()).getBytes());
  115. }
  116. catch(IOException e) { System.out.println(e);}
  117.  
  118. }
  119. }
  120.  
  121.  
  122. /**
  123. *Metoda wysylajaca odpowiedz do klienta
  124. *
  125. *@param data - tablica bajtow z danymi
  126. */
  127.  
  128. void send(byte[] data)
  129. {
  130. try
  131. {
  132. //wysylanie danych
  133. out.write(data);
  134. out.write("\r\n".getBytes());
  135.  
  136. }
  137. catch(IOException e){System.out.println(e);}
  138. }
  139.  
  140. }
  141.  
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement