He estado intentando esto por un tiempo, y quiero que varios clientes reciban múltiples entradas simultáneamente.
Existe un problema: quiero que el servidor imprima "Hola" a todos los clientes si un cliente dice "Hola impresión2".
Sé cómo procesarlo para imprimirlo, solo para imprimir a TODOS los clientes es el problema.He creado un servidor Java con conectores, ¿cómo puedo imprimir en TODOS los enchufes?
Esto es lo que tengo hasta ahora.
servidor
try{
try{
server = new ServerSocket(25565);
} catch (Exception e){
e.printStackTrace();
}
while (isListening){
new SocketThread(server.accept()).start();
}
server.close();
} catch (Exception e){
e.printStackTrace();
}
SocketThread
try {
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String inputLine, outputLine;
Processor kkp = new Processor();
out.println("Hi!");
while ((inputLine = in.readLine()) != null) {
outputLine = kkp.Proccess(inputLine,this.socket);
out.println(outputLine);
}
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
Client
Processor p = new Processor(); socket = new Socket("localhost",25565); out = new PrintWriter(socket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;
String fromUser;
out.println("print2all Hi")
socket.close();
Chicos. Si desea utilizar esto como un servidor de arranque, doy permiso total = P
No creo que las tomas son seguros para subprocesos embargo, por lo que podría terminar con la impresión simultánea de la rosca toma de posesión de la toma y el que está transmitiendo. –
@ChristopheBiocca: tienes razón, pero OP parece tener problemas mucho más simples. Sin embargo, mencionaré sobre seguridad de hilo, ¡gracias! –
+1 Si usa una colección de la biblioteca de concurrencia, puede hacer que el subproceso se agregue y finalmente eliminar el socket para mantener la lista. Es probable que agregar y eliminar el controlador de la conexión sea más útil ya que puede obtener el estado de las conexiones correctamente. –