Foro de elhacker.net

Programación => Java => Mensaje iniciado por: miltonprogramador en 27 Diciembre 2016, 17:05 pm



Título: Hola... ¿Este comportamiento es falla del socket?
Publicado por: miltonprogramador en 27 Diciembre 2016, 17:05 pm
Hola chicos.. como bien me han ayudado en anteriores casos recientemente, hoy traigo una duda más... He realizado una aplicación cliente servidor (el cliente es una clase para pruebas del servidor, es decir, no es la aplicación final) mediante socket, pero toda va bien, excepto cuando pido al cliente conectarse con un bucle con multiples conexiones. esto lo hago para probar la funcionalidad del servidor... Al hacer esto comienza hacer el trabajo pero, si pido hacer 100 conexiones solo se conectan 80 y algo, es decir, la cantidad que se conecta no es constante pero esta en el orden de los 80  a 85 cuando intento conectar 100

El resultado a las fallidas es: "connect refused" en consola (porque alli pido mostrar la excepción)

Entonces no se si es la velocidad de mi procesador que no le es suficiente para sostener el servidor o es el problema de la cantidad alta simultánea de envios desde el cliente...

En fín, les dejo el código del cliente para que tengan un panorama más claro...
Código
  1.  
  2. class Persona extends Thread {
  3.    protected Socket sk;
  4.    protected DataOutputStream dos;
  5.    protected DataInputStream dis;
  6.    private int id;
  7.    public Persona(int id) {
  8.        this.id = id;
  9.    }
  10.    @Override
  11.    public void run() {
  12.        //System.out.println("voy aqui: " + this.id);
  13.        try {
  14.                sk = new Socket("localhost", 10579);
  15.                System.out.println(id + " envía saludox");
  16.               // sk.close();
  17.  
  18.        } catch (Exception ex) {
  19.            //Logger.getLogger(Persona.class.getName()).log(Level.SEVERE, null, ex);
  20.            //System.out.println(id + "->Ha ocurrido algo inesperado... " + ex.getMessage());
  21.            //ex.printStackTrace();
  22.        }
  23.    }
  24. }
  25. public class Cliente {
  26.    public static void main(String[] args) {
  27.  
  28.        int hosts = 100;
  29.        for (int i = 0; i < hosts; i++) {
  30.  
  31.            Thread clt = new Thread(new Persona(i));
  32.            clt.start();
  33.            try {
  34.                clt.join();
  35.            } catch (InterruptedException ex) {
  36.                Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
  37.            }
  38.        }
  39.    }
  40. }
  41.  
  42.  

NOTA: En el join le he variado el tiempo, lo he colocado en 100, 400, 600, 800, 1000... ya mil me parece un tiempo laaargo, ahora el detalle es que ha mayor tiempo para la sincrnización es menor el margen de error.... MENOR pero el comportamiento sigue...

AUXILIOOO!


Título: Re: Hola... ¿Este comportamiento es falla del socket?
Publicado por: 4dr14n31t0r en 12 Enero 2017, 22:55 pm
Pues yo empecé a mirar los sockets en java en mi clase el otro dia y obtuve ese error de "connect refused" porque ejecutaba el programa cliente antes que el servidor. Prueba a ejecutar antes el servidor y luego el cliente.