Servidor.java
1
2
3
4
5
6
7
8
9
10
11
12 import java.io.BufferedReader;
13 import java.io.IOException;
14 import java.io.InputStreamReader;
15 import java.io.PrintStream;
16 import java.net.ServerSocket;
17 import java.net.Socket;
18
19 class ListaSockets{
20 private Socket[] socket;
21 private PrintStream[] salida;
22 private int num;
23
24 public ListaSockets(int n) {
25 socket = new Socket[n];
26 salida = new PrintStream[n];
27 num = 0;
28 }
29
30 public void add(Socket s){
31 try {
32 salida[num] = new PrintStream(s.getOutputStream());
33 } catch (IOException e) {
34 e.printStackTrace();
35 }
36 socket[num++] = s;
37 }
38
39 public int length(){
40 return num;
41 }
42
43 public Socket get(int n) {
44 return socket[n];
45 }
46
47 public PrintStream getSalida(int n) {
48 return salida[n];
49
50 }
51 }
52
53 class Serv implements Runnable{
54 private Socket socket;
55 private ListaSockets listaSockets;
56
57 public Serv(Socket s, ListaSockets ls) {
58 socket = s;
59 listaSockets = ls;
60 }
61
62 public void run() {
63 BufferedReader entrada;
64
65 try {
66 entrada = new BufferedReader(new InputStreamReader(socket.getInputStream()));
67 String mensaje;
68 while( (mensaje = entrada.readLine()) != null){
69 for (int i = 0; i < listaSockets.length(); i++) {
70 listaSockets.getSalida(i).println(mensaje);
71 }
72 }
73 } catch (IOException e) {
74 e.printStackTrace();
75 }
76 }
77
78 }
79
80 public class Servidor {
81 private static final int puerto = 9999;
82 private static final int max = 10000;
83
84 public static void main(String[] args) {
85 ServerSocket serverSocket;
86 ListaSockets listaSockets = new ListaSockets(max);
87 Serv[] serv = new Serv[max];
88 Thread[] thread = new Thread[max];
89 try {
90 serverSocket = new ServerSocket(puerto);
91 for(int i = 0; i < max; i++){
92 Socket socket = serverSocket.accept();
93 listaSockets.add(socket);
94 serv[i] = new Serv(socket, listaSockets);
95 thread[i] = new Thread(serv[i]);
96 thread[i].start();
97 }
98 } catch (IOException e) {
99 e.printStackTrace();
100 }
101 }
102
103 }
CategoryJava | CategoryProgramacion