elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  SERVIDOR CON MULTIPLES CLIENTES
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: SERVIDOR CON MULTIPLES CLIENTES  (Leído 8,590 veces)
lexoazul

Desconectado Desconectado

Mensajes: 48


Ver Perfil
SERVIDOR CON MULTIPLES CLIENTES
« en: 23 Octubre 2009, 03:05 am »

Hola a toda la comunidad, tengo un problemilla quisiera saber si alguien me pude ayudar o si alguien sabe como un servidor puede atender a varios clientes a la vez; ya tengo hecho las clases cliente/servidor pero solo puede interactuar un cliente con el servidor, si alguien sabe se lo agradeceria mucho; cualquier comentario o ayuda sera bienvenido; de ante mano muchsimas gracias.

 :D         :rolleyes:                              :laugh:         :silbar:


En línea

isseu


Desconectado Desconectado

Mensajes: 325


°º¤ø,¸¸,El conocimiento es poder°º¤ø,¸¸,ø¤º°`°º¤ø,


Ver Perfil WWW
Re: SERVIDOR CON MULTIPLES CLIENTES
« Respuesta #1 en: 23 Octubre 2009, 03:13 am »

lee sobre sockets asincronos (o asincronicros?)


« Última modificación: 23 Octubre 2009, 03:15 am por isseu » En línea

Leyer


Desconectado Desconectado

Mensajes: 786


leyer@elhacker.net


Ver Perfil WWW
Re: SERVIDOR CON MULTIPLES CLIENTES
« Respuesta #2 en: 23 Octubre 2009, 05:39 am »

es facil solo tienes que crear un obj usuario por cada conexion entrante y comunicarte con el enviandole algun command/msg.

Código
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.io.PrintWriter;
  5. import java.net.InetAddress;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. import java.net.UnknownHostException;
  9. import java.util.Hashtable;
  10.  
  11. /**
  12.  * @Autor Leyer
  13.  * @see   GlassFish Tools Bundle For Eclipse
  14.  *
  15.  * Servidor simple para multiples conexiones
  16.  */
  17. interface config{
  18. public static final int    _port    = 8081;
  19. public static final int    _backlog = 500;
  20. public static final String _host    = "localhost";
  21. }
  22. public class server extends ServerSocket implements Runnable
  23. {
  24. private class user extends Thread{
  25. private BufferedReader reader      = null;
  26. private PrintWriter    printWriter = null;
  27. private Socket  socket             = null;
  28. private boolean connected          = false;
  29. private int     nro = 0;
  30. private String username = null;
  31. public user(Socket socket, int nro){
  32. this.socket = socket;
  33. try {
  34. reader = new BufferedReader(new InputStreamReader(server.this.socket.getInputStream()));
  35.    printWriter = new PrintWriter(this.socket.getOutputStream());
  36. connected = true;
  37. username = this.socket.getLocalAddress().getHostAddress();
  38. this.nro = nro;
  39. } catch (IOException e) {
  40. e.printStackTrace();
  41. }
  42. }
  43.             void writer(String msg){
  44. printWriter.println(msg);
  45. }
  46. public boolean isActive() {
  47. return connected;
  48. }
  49. public void setActive(boolean active) {
  50. this.connected = active;
  51. }
  52. @Override
  53. public void run() {
  54. while(connected){
  55. try {
  56. if(reader.ready()){
  57. String msg = reader.readLine();
  58. System.out.println(" User:"+nro+ "+"+username+"-> "+msg);
  59. if(msg.equalsIgnoreCase("disconnected")){
  60. handler.remove(username);
  61. }
  62. }
  63. } catch (IOException e) {
  64. e.printStackTrace();
  65. }
  66. }
  67. }}
  68. private Socket      socket    = null;
  69. boolean init                    = true;
  70. private Hashtable< String, user> handler  = new Hashtable<String, user>();
  71. int nro = 0;
  72. @Override public void run() {
  73. while(init){
  74. try {socket = accept();
  75. System.out.println("New User: "+socket.getLocalAddress().getHostAddress());
  76. handler.put(socket.getLocalAddress().getHostAddress(), new user(socket,nro));
  77. handler.get(socket.getLocalAddress().getHostAddress()).writer("true");
  78. nro ++;
  79. } catch (IOException e) {
  80. e.printStackTrace();
  81. }
  82. }
  83. }
  84. public boolean isInit() {
  85. return init;
  86. }
  87. public void setInit(boolean init) {
  88. this.init = init;
  89. }
  90. public server(int port, int backlog, InetAddress bindAddr)
  91. throws IOException {
  92. super(port, backlog, bindAddr);
  93. System.out.println("---------------------------------------");
  94. System.out.println("Server is OK");
  95. System.out.println("---------------------------------------");
  96. new Thread(this).start();
  97. }
  98. /**
  99. * @param args
  100. * @throws IOException
  101. * @throws UnknownHostException
  102. */
  103. public static void main(String[] args) throws UnknownHostException
  104. new server(config._port,
  105. config._backlog,
  106. InetAddress.getByName(config._host));
  107. }
  108. }

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Múltiples webs en Servidor Debian « 1 2 »
Desarrollo Web
DarkItachi 15 7,666 Último mensaje 19 Abril 2011, 01:52 am
por DarkItachi
Como redirecciono clientes de un servidor a otro ?
Redes
User 0 1,434 Último mensaje 25 Julio 2012, 01:16 am
por User
Ejecutar programas en un servidor central y transmitir video a los clientes
Software
Aikanáro Anário 0 1,275 Último mensaje 16 Abril 2013, 16:40 pm
por Aikanáro Anário
[Sockets] Conexiones múltiples de clientes a servidor.
Programación C/C++
Zodiak98 6 5,211 Último mensaje 25 Enero 2016, 00:42 am
por sodark
Multiples clientes en 1 puerto - Netcat
Hacking
martinboca 0 1,752 Último mensaje 27 Febrero 2017, 15:32 pm
por martinboca
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines