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


  Mostrar Mensajes
Páginas: 1 ... 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 [380] 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 ... 432
3791  Foros Generales / Foro Libre / Re: ¿el negocio de las drogas puede desestabilizar una economia? en: 9 Julio 2017, 17:30 pm
supongo que te refieres a las drogas ilegales, porque las legales son muy rentables por los altos impuestos que cobran los gobiernos.

y es precisamente por eso es que los traficantes son tan perseguidos, porque es dinero que no entra al fisco, y es un dinero que no percibe el gobierno, y como son los gobiernos quienes controlan el dinero (y la economía) es obvio que le hace muchisimo daño.
No es solo la cuestión fiscal, es mucho más problemático el asunto de donde va a parar ese dinero evadido, y, que por lo general va a la adquisición de armas o al patrocinio de más mafias y cosas ilegales.
No enfrentar ese problema (es decir, no perseguirlo) hace que crezca más y más y la desestabilización social entonces se hace patente. Y ya no es sólo un problema de evasión del fisco y cuestión económica ahora es ya inseguridad en las calles... y el más vivo ejemplo de esta situación, posiblemente sea Méjico. Donde ya delincientes son incluso policías, y los asesinatos son indiscriminados y prácticamente el gobierno ha perdido el control sobre el asunto. Al final queda recurrir al ejército y para entonces de una forma tajante (sin compasión), en la que sin duda caen víctimas inocentes. Así que lo correcto es atajarlo cuanto antes y severamente.

Tema aparte es si se debieran legalizar o no. Si se legalizara su consumo y producción, el precio caería estrepitosamente, y las mafias no tendrían nada que hacer (aunque sus estertores se notaría un reguero de muerte durante quizás 1 o 2 años), cualquiera podría tener su trocito de plantación para su propio consumo y si además el gobierno le pone límite de precio, mejor (si se legalizara, digo).

El principal problema de legalizar algo tan nocivo para la salud, es que al comienzo durante un período indeterminado, entraría mucho material de mala calidad y generaría muchas muertes, tantas que sería fácil creer que ese estadística continuaría así siempre... (posiblemente se fuera reduciendo año tras año hasta estabilizarse a partir del 5º año) y qué político va a tener el atrevimiento de legalizar drogas, si al año mueran 2.000 personas directamente por esas drogas, y recibir la acusación de los familiares y de los medios de comunicación?.
Además si se legalizara, (para la distribución al menos y no tanto para el consumo propio) debería pasar un control de calidad, incluso diría sanitario, como lo pasan todas las medicinas, para garantizar que los ingredientes son los que deben y que no existe adulteración (algunas adulteraciones son inocuas y su problema sería solo engaños al fisco, pero otras son tóxicos para la salud y en cualquier caso ambos son indeseables).

Ahora desestabilizar a un país con la droga?. Quizás países pequeñitos, como 'Andorra' (me cuesta considerarlo país) o fuertemente dependientes de los ingresos 'indirectos' de las drogas (desconozco si Bolivia o el propio Méjico tiene en su economía un fuerte impacto, en el Producto Interior Bruto, incluso aunque no entre en tal tasación, pero asumo que sí..). Entonces salvo países fuertemente dependientes de consumidores, productores,  distribuidores, (fuertemente dependientes es una relación de cantidades, dependientes de la población total del país y de la que se dedica a ese 'negocio') no creo que tenga peso para desestabilizar ningún país.
3792  Foros Generales / Foro Libre / Re: China crea una planta solar de 250 acres con forma de Panda en: 9 Julio 2017, 16:46 pm
Yo dejaría en funcionamiento las centrales nucleares hasta el final programado de su vida útil, sin ánimo de renovación. Si a una central le quedan 20 años, pués que siga produciendo durante 20 años, pero llegado esa fecha que se desmantele. Y por supuesto NO crear ninguna más. A lo sumo admitiría 1 única central nuclear, pequeñita, y exclusivamente para estudios, es decir no para producción energética, aunque naturalmente lo que produzca (mucho o poco), que se vierta a la red...

En cambio con los combustibles fósiles, soy intolerante al 200%.
Si Francia le ha puesto fecha de extinción a los vehículos de combustión interna en 2040, yo ya a comienzos de los 90, le hubiera puesto fecha para el 2020... Poder se puede, pero los intereses empresariales y el amiguismo político (el pacto diabólico de las sociedades actuales), es lo que impide avanzar en la renovables.
A mediados de los 90, España era un país prácticamente a la cabeza en lo referente a las energías renovables, muchos proyectos y mucha investigación, que al final no ha llegado a cuajar del todo, porque las políticas de los susesivos gobiernos (y digo sucesivas, para los de fuera o para los duros de oído... susesivas porque se han ido alternado políticas de derecha e izquierda), han ido dinamitando constantemente el futuro tecnológico de las renovables. ¿Por qué?... por lo mencionado más arriba... el pacto 'diabólico' entre empresas y política.

A estas alturas España podría ser líder mundial (no en producción, por que hay países de mucho mayor tamaño, como China, por supuesto), pero si en tecnología... de hecho durante un breve período fuimos líderes mundiales en tecnologías renovables. Y también a estas alturas deberíamos ser líderes europeos en producción... en esto si podríamos competir con Italia, Grecia, etc...
En los países escandinavos (con v, no con b  :laugh:), la producción de energía geotérmica es tan importante como aquí (es España) lo es la solar...

La energía nuclear, puesto que ya están ahí las centrales, es un mal que hay que soportar, pero bajo ningún concepto, debe aumentarse el daño que ocasionan.

Todavía no he oido hablar de ningún proyecto, para que todo el planeta construya una nave espacial con todos los resíduos nucleares y que una vez cada 10 años, salga rumbo al Sol... que es pura energía nuclear... Hay muchos proyectos, como construir un acelerador de partículas x veces más potente que los anteriores, en varios países, pero mandar un cohete al sol con los resíduos nucleares (y de paso a muchos políticos como polizones d eprimera en la bodega), no genera beneficios, luego... si no produce dinero... punto final.

Y los combustibles fósiles, son la causa de un rápido desarrollo industrial, cierto, pero a un precio muy elevado.
- El proceso del carbón es tan tóxico que no vale la pena ni comentarlo. Hay sin embargo una central (creo que en Asturias), cuyos estudios han logrado producir energía mucho más limpia a partir del carbón, en un nuevo proceso, y no es nuevo es de hace algunos años ya...
- En cuanto al petróleo, el precio ha sido mucho más elevado aún... yo me atrevo a afirmar que el 90% de las guerras 'árabes' (desde la segunda mitad del siglo XX, obviamente) tiene su origen y fin en el petróleo, a pesar de los innumerables disfraces étnicos o religiosos con los que se ha encubierto... (como las guerras del coltán, pero esas no fueron enmascaradas de ninguna manera)...
- A menudo, Siempre, cuando se habla de costes, solo se habla de los costes de la producción, jamás se incluye en los costes, la descontaminación, ni el reciclaje, ni por supuesto los tratamientos médicos de los enfermos que produce...

Por eso cuando el gobienro aprobó las medidas antitabaco, para no fumar en sitios cerrados, a mi me produjo la risa (por no llorar), ya que el humo que aspiro de los fumadores (nunca he sido fumador), es ridículo en comparación con los humos que aspiro de los escapes de los vehículos que ruedan por la ciudad. Asumo que un coche en solo 3 minutos parado ante un semáforo, escupe más humo tóxico que un fumador en todo un año.

...por cosas así, me asquean todos los políticos (sin excepción) sean de la línea en la que se quieran situar. Siempre estan a lo que 'se ve', en vez de a lo que 'es necesario'... Son como el mal trabajador, que solo rinde cuando el jefe está delante (y le ve), y luego que no le ve, no rinde nada.
3793  Foros Generales / Foro Libre / Re: ¿creen que las protestas en venezuela lleguen a alguna parte? en: 8 Julio 2017, 22:55 pm
Esto puede acabar como lo de "la primavera árabe". Mucho ruido y pocas nueces...

Los cambos hoy día deben ser pacíficos, pero hay momentos en que los que ostentan el poder no quieren despegarse de él, y entonces ese hace necesario 'sacudirlos'.

La silla del poder es cómoda, y hace al que se sienta en ella, olvidarse de qué vino a hacer cuando se sentó en ella...

Decía Paracelso en uno de sus tratados: "Una flor crece hasta alcanzar la altura que el destino le ha designado. El que la ha hecho crecer, es también el origen de su caída..."
Es decir, impedid que los que sigue mamando de la 'teta', lo sigan haciendo y ya ellos mismos serán quienes cuelguen del palo a Maduro. Lo que se divide, no tiene permanencia.
3794  Foros Generales / Foro Libre / Re: Qué canción estás escuchando ahora ? en: 8 Julio 2017, 15:50 pm
Ahora mismo, ahora mismo que acabo de comer, no... pero anoche de madrugada mientras escribía código antes de irme a la cama estaba escuchando este tema (bueno el disco entero, pero pongo solo un tema):
Civil War de Guns N' Roses

El vídeo original... para disfrutarlo:


Y una versión subtitulada en español:
3795  Foros Generales / Foro Libre / Re: ¿por que hoy en dia existen mas "mediores de la seguridad" que antes? en: 8 Julio 2017, 15:35 pm
Hay gente realmente buena, pero los medios informativos, no quieren genios 'aburridos', para los medios informativos, más que genio tienes que ser destacable por alguna estupidez en tu personalidad que te hace estar en los medios todos los días.

Jamás saldrá en un periódico determinado genio que está en su casa trababajando un chorro de horas al día y que cuando sale a la calle, es una persona 'completamente normal'...

...y no digamos ya si no se acompaña de una estética digamos chocante o discutible. Si no eres un guaperas, o llevas un look estridente, para los medios informativos, careces del 'carisma' qe ellos esperan que enganche.

Así que disiento en lo que no haya genios, si no de que lo que florece, es distinto de lo florido que sacan en los medios...

Aparte de eso, Youtube, es como un arma que sirve igual para una buena defensa como para hacer mucho daño... el contenido en Youtube, no está seleccionado por otro criterio que el número de visitas... así no es difícil que un adolescente, alcance 10 millones de visitas y de repente se sitúe al nivel o por encima de un profesional. Esto a menudo, por dos razones, primero porque el profesional no tiene todo el tiempo del mundo para dedicar a youtube, ni para promocionarse como ese joven, y segundo porque los jóvenes es más que probable que ni hayan oído hablar de ese gran profesional en su vida. De hecho si hicieras una encuenta entre los jóvenes (y te digo que incluyas edad hasta los 28), verías que para ellos Steve Jobs, es la figura predominante y el ejemplo a seguir... cuando yo no lo pondría por delante de los 1000 primeros. Alguien tan genial como Niklaus Wirth, ni les suene, y le da 100 patadas a la mayoría de 'figuras' prestigiosamente reconocidas en los medios...
3796  Foros Generales / Foro Libre / Re: Que ha pasado exactamente en Venezuela esta vez??? en: 8 Julio 2017, 15:13 pm
Cuando se dice esto:
Citar
pidió  que se usen las listas de los empleados de toda la administración pública para vigilar que todos los trabajadores voten “sin excusas”

Básicamente se está pidiendo que se obligue a todos los que tienen nómina en el gobierno a que voten y sobretodo a que le voten a él, porque con vigilar, lo que en realidad quiere vigilar, es eso que le votan a él o no... para llegado el caso, largarlo de su puesto y meter a alguien que si le vota.
 
Además con lo de 'obligar a que voten sin excusas', podría estar sugiriendo veladamente  que si alguien no vota, ellos voten por él...

y cuando dice:
Citar
Maduro dijo que los ciudadanos de Venezuela elegirán “entre la paz y la guerra” el próximo 30 de julio, cuando se votará para elegir a los miembros de la Asamblea Nacional Constituyente (ANC) que redactarán una nueva Constitución.
Está diciendo con toda claridad, que si no gana habrá lucha armada, y si gana seguirá todo como hasta ahora, pero inmortalizado en el poder, porque el cambio en la Constitución, claramente lleva los tintes de 'erigirse Dios supremo ab-aeternum' en el país... vamos que se cree un faraón, hijo de los dioses y su palabra 'sagrada' aunque le cueste la vida a un millón de personas.

En fin, haber si uno de estos días muere atragantado con su propio bigote...
3797  Foros Generales / Foro Libre / Re: ¿vuestras peliculas y series de ciencia ficcion favoritas? en: 8 Julio 2017, 05:17 am
Solo citaré una de cada...

Película: Indiscutiblemente Blade Runner. Tras 35 años después, me sigue encantando como el día que la estrenaron... por cierto esta prevista el estreno para este año (octubre) una continuación titulada "Blade Runner 2049"


Serie: me encantó Fringe, lástima que no sacaran más temporadas...
3798  Programación / .NET (C#, VB.NET, ASP) / Re: Encontrar salas de chat con C# en: 6 Julio 2017, 10:07 am
---------------------------- NUEVO MENSAJE ------------------

Como pareces duro de mollera  :silbar: :silbar: :silbar: un poco de pseudocódigo que te ayude a clarificar ideas... que no es todo tan abstracto...

Te pongo un simple ejemplo de lo que sería un servidor, un cliente y una sala...

El pseudocódigo de un servidor....
Código:
Clase Servidor
   // Instancias de clases.
   TablaHash Clientes Privado ConEventos
   TablaHash ClientesOcultos Privado  ConEventos // clientes privilegiados, admins
   TablaHash Salas Privado ConEventos
   Sala SalaRaiz  Privado ConEventos
   Cliente ClienteRaiz  Privado ConEventos

   Buleano Existe

   Entero = Propiedad Sololectura NumClientes Publico
       Numclientes = Clientes.Cantidad
   Fin Propiedad

   Entero = Propiedad SoloLectura NumclientesOcultos Publico // o admins  
       NumClientesOcultos = ClientesOcultos.Cantidad
   Fin Propiedad
  
   Entero = Propiedad SoloLectura NumSalas Publico
       Numsalas = Salas.Cantidad
   Fin Propiedad

   Buleano = Propiedad SePermiteCrearSalas Oculto //lectura y escritura

  
   // Esta función se invoca para crear el servidor, que luego es público y permite la conexión... crea además, la primera sala y el resto de objetos necesarios.
   Funcion Nuevo(x,y,z) Oculta  ' parámetros que requiriese para crear el servidor
       Clientes = Nueva TablaHash
       ClientesOcultos = Nueva TablaHash
       Salas = NuevaTablaHash

       SalaRaiz= Nueva Sala
       ClienteRaiz = Nuevo Cliente(Alias, Invisible, Privilegios)
      
       Salas.Add(SalaRaiz)
       Clientes.Add(ClienteRaiz)
       ClientesOcultos.Add(ClienteRaiz)

       Existe = TRUE
    Fin Funcion
    
    // El ciente cuando se conecta al servidor, se añade a la lista de clientes.
    // Y también se le añade a la salaRaiz, y se le devuelve una referencia a esa sala.
    Sala = Funcion Conectar(Cliente Cli) Publico
        Si SalaRaiz.AdmiteClientes = TRUE luego
          //podría filtrarse aquí comparando con una lista de clientes/IPs, baneadas, pero quizás no sea muy efectiva...
             Si SalaRaiz.Add(cli) = TRUE  // solo debería devolver false si ya existe un cliente con el mismo alias.
                 Devolver SalaRaiz
             Fin si
        Fin si
    Fin Funcion        

    Sala = Funcion CrearSala(Cliente Cli, String NombreSala, Entero MasUsers)
        Si (SePermiteCrearSalas = TRUE) luego
            Si (Clientes.Existe(cli) = TRUE ) luego  // Todos los clientes, incluso los ocultos, constan en la colección Clientes.
                Si (Salas.Existe(NombreSala) = FALSE) luego
                    Sala = Nueva Sala(Cli, Nombresala, MaxUsers, This)
                    Salas.Add(sala)  //allí se dispara un evento de 'SalaCreada(Sala.nombre)' que le llega a todos los clientes.

                    Devolver Sala
                Fin Si
            Fin si
        Fin si


        // Ó si solo se permite a clientes ocultos (admins).
        Si (ClientesOcultos.Existe(cli) = TRUE ) luego ...
        ....

        // Ó si solo se permite a cliente con privilegios
        Si (cli.Privilegios.Contiene("CreateSala")) luego
            Si (Clientes.Existe(cli) = TRUE ) luego ...
            ....
        Fin si
    Fin Funcion

    // Otras funciones que tenga el servidor... (especialmente resolver los eventos de las intancias de las clases: Clientes, ClientesOcultos, Salas,  SalaRaiz, ClienteRaiz
Fin Clase

En alguna web (por ejemplo), cuando quien sea prende la máquina, ejecuta un programa que crea una instancia única del servidor.

Servidor WebServer = nuevo Servidor(x,y,z)
Y lo pone a la escucha, ahora cuando algún cliente ejecute su programa, ya en su programa reconoce la clase de tipo Servidor, y por tanto espera conectarse y obtener un referencia a la instancia... dejando aparte los detalles de la conexión (que se supone que es algo que dominas), y centrándonos en lo que importa, el cliente hac ela llamada.

Servidor ServerCliente = Lllamada(www... puerto... cliente...)
Si obtienes la referencia dle servidor, el programa cliente típicamente muestra un iconito verde de 'conectado'.

conectado significa que además el servidor conserva una referencia de tí como cliente, y que lo añade a una colección (típicamente una tabla hash).
Por tanto ya estás en la sala 'Raíz', la colección global de clientes conectados al servidor...

Pero el servidor, puede querer gestionar la clección en trozos más pequeños, pongamos que si hay 10.000 clientes conectados al servidor, no sería muy útil todos respondiendo al mismo tiempo en una sola sala.

entonces el servidor puede optar por crear auytomáticamente 'salas' cuando una se satura.
Así dentro d ela clase servidor, podría existir la siguiente funcion:
Código:
Sala = funcion CrearSalaAuto( String Nombre, cliente Propietario, Entero NumMaxUsers)
    Sala s
 
    Si Salas.Existe(Nombre) = FALSE) luego
        s = Nueva sala(Nombre, Propietario, NumMaxUsers)
        Salas.Add(s)
        DispararEvento SalaCreada(s.Nombre)
        
        Devolver s
    Fin si
Fin funcion

Y la razón para crear una sala automática es repartir clientes, orque había chorrocientos... antes de ir a cambiar el código, dejamos como era el código previo, para esa función:
Código:
Sala = Funcion Conectar(Cliente Cli) Publico
        Si SalaRaiz.AdmiteClientes = TRUE luego
             Si SalaRaiz.Add(cli) = TRUE  // solo debería devolver false si ya existe un cliente con el mismo alias.
                 Devolver SalaRaiz
             Fin si
        Fin si
Fin Funcion

Ahora vamos al código, modificando la función Conectar(), al servidor
Código:
Sala = Funcion Conectar(Cliente Cli) Publico
        Si (SalaRaiz.AdmiteClientes = TRUE) luego
            Si (SalaRaiz.Cantidad < 1500) luego
                Si (SalaRaiz.Add(cli) = TRUE)  // solo debería devolver false si ya existe un cliente con el mismo alias.
                    Devolver SalaRaiz
                Fin si
            Si no
                Hacer
                    String Nombre = Random(Chars(8))
                    Sala s = CrearSalaAuto(Nombre, Clientes.Item(0) , 1501) //cliente.Item(0), se supone que es el creador del servidor... un admin.
                Repetir mientras s.Nombre = "" // el nombre se crea al azar, si ya existe una con ese nombre falla, luego se reintenta. Lo razonable es que haya un ficherito con nombres de salas 'prefedinidas', que puedan tomarse en secuencia, manteniendo un puntero del último índice usado.
                
                // los clientes entre 1000 y 1500 se mueven a la nueva sala recién creada (por saturación de la previa), cuando llegue de nuevo a los 1500, se volverá a crear otra sala con 500 clientes...
                // También podría elegirse al azar a 500 clientes, pero esto podría dar lugar a que un cliente en repetidas ocasiones fuera movido a otra sala, Si los más antiguos, son los que permanecen ya saben que no serán movidos cuando haya un exceso de clientes en la sala, solo los más nuevos, y estos a su vez serán los más viejos en la siguiente sala... en definitiva, para el cliente esta simple opción parece menos molesta.
                Bucle para k desde 1000 hasta Clientes.Cantidad
                    Cliente c = Clientes.Item(k)
                    Clientes.Remove(k)
                    // Se notifica (sólo) a éste cliente que fue desconectado de la sala
                    c.SalaDesconectada(SalaRaiz.nombre)  //el porgrama cliente borrará el contenido de la ventana, lista de usuarios y mensajes.
                    s.Add(c) //en el método add se debe dispara un evento de 'usuario añadido', que notifica a todos los clientes de esa sala.
                      
                    // se notifica (solo) a este cliente que fue conectado a otra sala.
                    c.SalaConectada(s, s.Nombre)  // el programa cliente, toma la lista de clientes de la sala 's' y los lista y ahora los mensajes que esos usuarios publiquen se comparten solo entre los que tienen una referencia a la sala 's'
                Fin bucle
                                
                Salas.Add(s, s.Nombre)  // Añadimos la sala a la colección de salas.
                // informamos a todos los clientes suscritos al servidor de que hay una nueva sala disponible.
                DispararEvento SalaCreada(s.Nombre)

                s.add(Cli)  //el nuevo cliente que se acaba de conectar se añade a esta sala. y dispara un evneto que comunica a todios los clientes el alias del cliente recién conectado.
                //Cli.SalaConectada(s, s.Nombre) en la devolución de esta función haría lo mismo que en ese método.
                Devolver s //el cliente ahora recibe la sala 's', su programa luego de recibirlo, leerá los clientes conectados a ella y losmensajes de todos ellos se escribirán ahora ahí
            Fin si
        Fin si
Fin Funcion


Date cuenta que omito algunas comprobaciones, para no hacer el pseudocódigo demasiado enfangoso en detalles menores obvios ... es decir el nuevo lciente que se conecta debe verificarse si ya hay uno conectado con ese alias en la sala, y denegarle el acceso en tal caso con un código de error, que significa que 'ese alias ya existe en la sala (incluso mejor si se compara con la lista global.

Un método más propicio, sería no mover los clientes de la colección global (salaRaiz), sino que cuando, tras crear el Servidor se crea la salaRaiz, donde estén todos los clientes y una primera sala, donde se añaden los primeros 1000 clientes, cuando se llegue a 1000, se crea otra sala, y los siguientes se conectan a esa nueva sala... y todos siguen constando en la SALARaiz, para verificar que no hay repetido un alias en todo el servidor, esa sala entonces debería ser privada, nadie debe verla, salvo los admin.

Es decir cuando un cliente se conecta, primero se mira si se puede añadir a la salaRaiz, si no está allí su alias se añade, y luego se le añade a la sala 'actual' , o una al azar si se crean varias nada más generar el servidor, como ya sabemos que fue añadido a la salaraíz, su alias no está repetido, luego se podrá añadir a otra sala sin problemas.

Veamos ahora una función más del servidor... cambiar de sala.
Dado que el cliente tiene una referencia del Servidor, tiene acceso a la colección Salas (en modo lectura)... luego se puede listar cuando un cliente se conecta, pero cuando se crea una sala nueva, se notifica con un evento...(como se vió en la modificación de la función anterior).

Código:
Entero = Funcion ListarSalas(Out Listastring() NombreSalas)
     Dimensionar NombreSalas(0 a Salas.Cantidad-1)
      
    Bucle para k por cada sala s en Salas
        NombreSalas(k) = s.Nombre
    Fin bucle
    
    Devolver NombreSalas.Length // ó Salas.Cantidad
Fin funcion

Ahora otra función (del servidor) para cambiar de sala, a petición del Cliente:
Código:
Buleano = Funcion CambiarDeSala(String Nombre, Cliente Cli)
    Sala s
    Si (Salas.Existe(nombre) = TRUE)
        Cli.Sala.Desconectar //Esto provoca un evento clienteDesconectado en dicha sala, que informa a todos los clientes d ela sala de la desconexión (solo informa del Alias)
        // Sala.Desconectar invocaría internamente a Clientes.Remove(Cli) Dentro de la instancia Sala
        s = Salas.GetSala(Nombre) //El servidor tiene público la colección Salas, y esta función está dentor de la clase Servidor...
        s.Add(Cli)
        
        Devolver TRUE
    Fin si
Fin funcion


Ahora veamos como sería una clase Cliente (no confundir con el programa Cliente, el programa tiene admeás una instancia de esta clase Cliente, que identifica al usuario y le permite hacer ciertas cosas):

Un cliente simplificado:
Tiene un alias, una conexión con el servidor, una función publicar y una referencia
Código:
Clase Cliente
    Sala Sala ConEventos Oculto
    Servidor Conex ConEventos Privado
  
    String Propiedad Alias  <---- público
    String Propiedad HashId <----- privado, se genera automáticamente cuando se crea la instancia de la clase cliente.
    String Propiedad SoloLectura Privilegios Oculto
    Buleano Propiedad SoloLectura Oculto Publico
  
    Funcion Nuevo(String Nombre, Out Buleano Ok) Publico // el que se crea con un nuevo cliente genérico.
        Alias = Nombre
        HashId= CrearHash(Alias, TimeNow, NumRandom(100.000.00, 999.999.999))
        Privilegios = DefaultPrivilegios

        Conex = ConectarAServidor(Los datos de conexión)
        Si Conex.Existe Luego OK = TRUE
    Fin Funcion

    Funcion Nuevo(String Nombre, Buleano Visible, String Privileg) Privado // el que se crea con un admin, o el cliente creador del servidor que lo arranca y crea salas, etc...
        Alias = Nombre
        Oculto = Visible
        HashId= CrearHash(Alias, TimeNow, NumRandom(100.000.00, 999.999.999))
        Privilegios = Privileg

        // El cliente que crea esta instancia, tiene otro medios para realizar la conexión al servidor, porque es el que arranca el servidor y crea la NUEVA instancia del mismo.
    Fin Funcion

    Funcion CambiarPrivilegios(String Privileg) Oculto
        Privilegios = Privileg
        Sala.VerificarPrivilegios(Privileg)
    Fin Funcion

    // Evento que salta cuando se desconecta mediante Sala.Desconectar
    Funcion Sala_Desconectado(String Nombre)
        Borrar lista de clientes (usuarios),
        Borrar mensajes de la pizarra (textbox u otro objeto)
        //Obtener la lista de salas
       ListaString() Nombres =  Conex.ListarSalas(NumSalas)
       Bucle para k desde 0 a NumSalas-1
            ListboxSalas.Add(Nombres.Nombre)  // añade a un listbox, la lista de salas
        Fin bucle
    Fin Funcion

    // Este podría ser otro evento de la clase Sala, que se dispara cuando se añade un cliente a la sala
    Funcion Sala_ClienteConectado(String Alias)
        ListboxUsers.Add(Alias)
        Textbox.Add(Alias, " se añadió a la sala", Time.Tostring)
    Fin funcion

    // Este podría ser otro evento de la clase Sala, que se dispara cuando se desconecta un cliente de la sala
    Funcion Sala_ClienteDesconectado(String Alias)
        ListboxUsers.Remove(Alias)
        Textbox.Add(Alias, " se fue de la sala", Time.Tostring)
    Fin funcion

    // este podría ser un evento de la instancia del servidor...
    Funcion Conex_SalaCreada(Sala s)
        ListboxSalas.Add(s.Nombre)
        Textbox.Add("Se creó una nueva sala", s.Nombre, Time.Tostring)
    Fin funcion
Fin clase



Finalmente un ejemplo de lo que podria ser la clase Sala...
Código:
Clase Sala
    TablaHash Clientes Oculto
    Cliente Propietario Oculto  // la idea es que solo el propietario o un admin, pudiera eleiminar la sala.
    Servidor Conex
    Entero MaxUsers Oculto
    String NombreSala Publico

    Entero = Propiedad SoloLectura NumClientes Publico
        Numclientes = Clientes.Cantidad    
    Fin Propiedad
  
    Evento ClienteConectado(String Alias)
    Evento ClienteDesconectado(String Alias)
    Evento NuevoMensaje(String Mensaje, string Alias, String hora, etc...)

    // Todos los clientes suscritos a esta instancia recibirán el evento y ninguno más que estos.
    Buleano = Funcion Publicar(String Mensaje, String Hora, etc...)
         DispararEvento NuevoMensaje(Mensaje, Alias, Hora, etc...)
    Fin Funcion

    Sala = Funcion Add(Cliente NewCli) Publico
        Si (Clientes.Cantidad < MaxUsers) luego
            Si (Clientes.Existe(NewCli.Alias, NewCli.HashId) = FALSE) luego
                Clientes.Add(NewCli)
                DispararEvento ClienteConectado(NewCli.Alias)
            Fin si
        Fin si
    Fin funcion

    Buleano = Funcion Remove(Cliente Cli)
         Si (Clientes.Existe(Cli.Alias, Cli.HashId) = TRUE) luego
            Clientes.Remove(Cli)
            DispararEvento ClienteDesconectado(Cli.Alias)
            Devolver TRUE
        Fin si
    Fin funcion

    Sala = Funcion Nuevo(Cliente Propietario, String Nombre, Entero NumMaxUsers, Servidor Conexion)
          Si (Conexion.Clientes.Existe(Propietario.Alias, Propietario.HashId) = TRUE) luego
              Conex = Conexion
              MaxUsers = NumMaxUsers
              Clientes = Nueva TablaHash(NumMaxUsers)
              Clientes.Add(Propietario)
              Nombresala = Nombre
                          
              Devolver This
          Fin si
    Fin Funcion

    ...más funciones, propiedas, etc.. por ejemplo cambiar privilegios en la sala a un cliente...
Fin Clase


Es un código al vuelo, así rápido así que estará lleno de imprecisiones erroes, y diferencias (en un sitio llamo a un evento de una manera y luego en su clase la nombro de otra), es razonable escribiendolo sobre la marcha...

...espero sin embargo que sirva para que te quede claro varias cosas:
--- Que una sala, es tan solo una colección de clientes suscritos a una misma instancia, y que por tanto comparten los eventos de esa única instancia entre ellos.
--- Que el servidor mantiene la lista de salas, que es simplemente otra colección de instancias de sala.
--- que el servidor puede crear una sala, o varias, incluso de modo automártico si una sala se satura pongamos al 75% de su capacidad, desplazando (también automáticamente) usuarios a la otra sala recién creada.
--- Que el servidor puede permitir a un cliente crear una sala, bajo demanda (petición). aunque lo normal es que lo creen los admins o usuarios con privilegios.
--- Que los privilegios, aunque no se ha hablado apenas de ellos, son una simple lista de textos, algo como: "CreateSala, MoveToAnySala, ConnecToAnySala, DisconnectToSala, ListUsersInSala, ListSalasInServer, ChangePrivileges, etc..." Incluso un textomás abreviado con mnemónicos si lo prefieres: "cre, mov, con, dis, liu, lis, cha, etc..."

...y bueno si no te enteras, pués ya más no se puede hacer....
  
3799  Programación / .NET (C#, VB.NET, ASP) / Re: Encontrar salas de chat con C# en: 6 Julio 2017, 06:16 am
Un servidor que crea salas? Y si uno quiere una sala nada mas?
Qué funciones crees tú que tiene el servidor????.
Colectar clientes y salas. Los clientes existen, no se crean pero al caso los loguea/conecta (que es conceptualmente lo mismo), ...pero
...y las salas?... no son entes propios o sí?... qué crees tú que son las salas?.
No existen en ninguna parte. Las crea (virtualmente) el servidor a petición de un cliente (si el diseño del servidor permite que cualquier cliente pueda crearlas (o solo clientes con determinados privilegios (los llamados administradores)).

Una sala al fin y al cabo, no es más que un selección de clientes... una colección de clientes, con unas simples propiedades... desde el punto de vista programático, es así de sencillo, instancias de una colección específica, que reúne clientes y comparten eventos a los que todos los clientes que tienen una referencia de esa instancia, están suscritos, y entre sus propiedades puede estar por ejemplo el nombre de la sala... NumeroMaximoUsuarios, cantidadUsuarios, o métodos como AliasDelPropietario, CambiarPrivilegiosDeCliente, ExisteCliente, Addcliente, RemoveCliente, etc...

Tomemos como ejemplo Sb0t y Ares para no confundirnos mas:
Sb0t deberia crear varias salas por defecto? Que yo sepa, Sb0t no hace eso.
Desconozco, lo que haga tal o cual programa. La pregunta no debe ser qué hace tal programa, la pregunta debe  ser qué quieres hacer tú... Si lo que quieres es copiar a otros programas, entonces hazte con una copia del código y estudialo a fondo. Si lo que quieres es diseñar tu propio chat bajo tus propios criterios, pués adelante...

Ares, el lado del cliente no crea salas. Sino no seria cliente, sino servidor.
Insisto... ¿qué quieres hacer?. copiar lo que hace otro programa?... si es que sí busca su código... de todas maneras, las cosas tiene diferentes maneras de resolverse y pensar en copiar lo que hace un programa por que sí, es algo patético. Yo jamás hago algo basado en el hecho de que 'es lo que hacen los demás', como programador, cuando hago algo, lo hago convencido de que es lo mejor que s epuede hacer (dados los recursos de que se dispongan (como el tiempo))... conformarse con copiar, es aspirar... a nada, una copia jamás mejora un original, entonces por qué nadie va a usar una copia teniendo disponible el original, si la copia es mucho peor...

Si quieres crear un chat, no tienes por qué copiar todos y cada uno d elos detalles que tengan otros, lo razonable es que tú tengas ideas propias que puedna aportar soluciones o novedades que incluyan mejoras o diferencias significativas que se ditingan del resto... hacer un clónico solo por hacerlo, suele ser una pérdida de tiempo... y casi siempre es mucho más ineficiente.

----
en fin yo te digo como lo plantearía:

Si tienes la lista de usuarios-clientes conectados global, esa lista es privada. Puede haber una petición para que un cliente obtenga la lista de salas, mejor si cuando se conecta, se la entrega, también un actualización cuando se crea una nueva sala.

Crearía una función para que un cliente (o solo aquellos con determinados privilegios), puedan crear salas, con un evento para actualizar la lista de salas a todos losclientes (quizás determinadas salas solo estén disponibles para los administradores, o bien que requiera supervisión de un administrador, la 'publicación' de una nueva sala. Y una función para que un usuario se mueva de una sala a otra.

La sala como te he dicho, no es más que una instancia de una colección, que almacena básicamente clientes. Y que entre ellos se interconectan porque comparten la misma referencia a dicha instancia. Todo controlado por eventos...

Pero tú mismo, si quieres imitar a otros programas, lo mejor es que te hagas con el código de alguno...
3800  Foros Generales / Foro Libre / Re: Corea del Norte anuncia el "éxito" del lanzamiento de su primer misil interconti en: 5 Julio 2017, 14:48 pm
mmmm... lo que dijimos tiempo atrás... no superó terreno por encima de Japón, ni tampoco llevó la dirección de las Kuriles. Es 'empujar' el balón solo una patada más allá. Eso sí muy medida la patada... que es lo que cabría esperar.

es como cuando inflas un globo y piensas que en cualquier momento va a reventar y se lo pasas a otro, ese otro, añade un 'minisoplido' para que no se le reviente a él y rápido se lo pasa a otro... al final reventará, por supuesto, es sólo cuestión de tiempo, de cuantos minisoplidos aguanta. Luego que reviente, habrá que atenerse a las consecuencias, porque no podrá quedar indemne.

China y Rusia, cuando llegue la ocasión tendrán que CHUP4R53L4 a USA.
¿Irán, quien C0ñ0 es Irán y qué pinta aquí?.

Armas nucleares hay más de 30 países que las tienen, por desarrollos propios, al margen de aquellos que las tienen por tener bases amigas en su territorio.
Páginas: 1 ... 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 [380] 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 ... 432
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines