Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: patilanz en 28 Octubre 2014, 07:58 am



Título: Manear de guardar ip de usuarios
Publicado por: patilanz en 28 Octubre 2014, 07:58 am
Hola estoy haciendo un programa de dibujo con sfml donde al abrir el programar te tienes que conectar con todos los usuarios que tienen el programa abierto para empezar a dibujar todos a la vez. Pero el problema es como saber la ip de los usuarios conectados.

Al principio pensé tener un archivo txt en un servidor pero es demasiado inseguro. Luego opte por un programa php pero tampoco creo que es lo mejor.

Se os ocurren mas alternativas ? 

Saludos


Título: Re: Manear de guardar ip de usuarios
Publicado por: eferion en 28 Octubre 2014, 10:59 am
Yo te recomiendo dos opciones:

* Programas un servidor. Los clientes se conectan a dicho servidor y es éste el que proporciona las ips de los clientes que estén conectados en ese momento. Esta transacción se puede hacer de forma segura utilizando certificados digitales. Si además obligas a que cada cliente tenga que tener una cuenta creada en el servidor (con su correspondiente contraseña), mejor aún.

* Los clientes que quieran compartir "pizarra" se ponen en contacto entre ellos para facilitarse la dirección IP. Es mucho más engorroso, pero también es mucho más fácil de programar y más barato.

No hay muchas más opciones... Internet no te proporciona ninguna facilidad adicional en este aspecto.


Título: Re: Manear de guardar ip de usuarios
Publicado por: ivancea96 en 28 Octubre 2014, 12:57 pm
Siempre puedes hacer que el servidor maneje las coenxiones, sin permitir que los usuarios se conecten entre ellos.

Así:
  • Tienes control de todo lo que ocurre desde el servidor.
  • Le quitas trabajo al cliente.


Título: Re: Manear de guardar ip de usuarios
Publicado por: patilanz en 29 Octubre 2014, 07:55 am
También pensé algo así pero si el servidor ya no esta el programa dejaría de funcionar. Creo que lo mejor es hacer lo como servidor y cliente para que se conecten entre si los que quieren dibujar  ;D

Y no se podría utilizar un método de las redes P2P que no todas tienen servidor o seria un disparate de ips?


Título: Re: Manear de guardar ip de usuarios
Publicado por: eferion en 29 Octubre 2014, 14:32 pm
Las redes distribuidas sin servidor no son tal, lo que sucede es que cada cliente hace también las veces de servidor. Lo que sucede en estos casos es que un cliente nuevo que se quiera conectar ha de conocer la dirección de, al menos, uno de los integrantes de la red para poder conectarse a la misma... un cliente no se va a poder conectar a esta red únicamente conociendo el protocolo de la conexión, necesita también una IP que le permita integrarse en el sistema.

La ventaja de que haya un servidor central es que se simplifica el proceso de establecer una conexión (whatsapp, skype, la mayoría de los juegos online, ... todos ellos utilizan un servidor central, aunque sea para integrar a los nuevos clientes en el sistema).

La ventaja de evitar el servidor central es que no dependes del mismo para que funcione el sistema, aunque esto es a costa de complicar el establecimiento de la conexión. Y aún así hay algo contra lo que no podrás luchar... si se cae el que hace de servidor, los clientes serán expulsados del sistema.


Título: Re: Manear de guardar ip de usuarios
Publicado por: patilanz en 29 Octubre 2014, 21:31 pm
Citar
La ventaja de evitar el servidor central es que no dependes del mismo para que funcione el sistema, aunque esto es a costa de complicar el establecimiento de la conexión. Y aún así hay algo contra lo que no podrás luchar... si se cae el que hace de servidor, los clientes serán expulsados del sistema.

Si utilizas el servidor solo para establecer la conexión los clientes no serian expulsados aunque no se podrían conectar nuevos.
Se me acaba de ocurrir si no utilizas IP como protocolo de la capa de red. Por ejemplo en los que tienen sus propias redes privadas si utilizas un protocolo que tenga el numero de identificación muy pequeño de modo que se limitaría el numero de conexiones pero se podría enviar peticiones hacia todos los posibles clientes que seria como un rango de ip muy pequeño (vamos que cada programa tendría su propio numero de identificación diferente del ip) y si se contesta pues se conecta. Pero no se si es posible por parte de los dispositivos como los routers que utilizan otros protocolos de enrutamiento.

Es posible?


Título: Re: Manear de guardar ip de usuarios
Publicado por: eferion en 30 Octubre 2014, 08:31 am
En el momento en el que dos equipos se encuentren en redes diferentes... salvo que utilices una VPN no podrás conseguir que se comuniquen si limitas el rango de IPs. El motivo es que las redes locales tienen IPs ubicadas en unos rangos reservados. Estos rangos se reutilizan en miles de redes locales, por lo que esas IPs se repiten miles de veces. Lo que sucede es que estas redes locales hacen uso de un router... y la IP pública de ese router sí es única... si no lo fuese no podrías crear un DNS que apuntase directamente a la IP de tu router. El caso es que para comunicar con algún equipo de esa red local desde el exterior tu tienes que hacer dos pasos:

* Proporcionar la IP pública del router
* Crear una redirección en el router para que todas las conexiones que reciba del protocolo X (TCP o UDP) y que vayan por el puerto Y las mande directamente al equipo que te interesa.

Las IPs públicas no las puedes acotar.

Otra cosa es que todos los equipos vayan a estar en la misma red local... entonces ya si podrías plantearte crear un sistema más a medida (aunque eso implica que será un diseño más rígido y complicado de cambiar).


Título: Re: Manear de guardar ip de usuarios
Publicado por: patilanz en 30 Octubre 2014, 11:17 am
Me refería a utilizar otro tipo de protocolo que no utilize ip pero no creo que se pueden comunicar.


Título: Re: Manear de guardar ip de usuarios
Publicado por: eferion en 30 Octubre 2014, 11:21 am
Si no usan IP... y más si el protocolo es propio... los routers no sabrán como utilizar ese protocolo, no sabrán como enrutarlo ni como identificar el destino y los paquetes se perderán.


Título: Re: Manear de guardar ip de usuarios
Publicado por: ivancea96 en 30 Octubre 2014, 12:50 pm
Si no quieres complicarte con el servidor, siempre puedes hacer un servidor web, con un php, y punto.


Título: Re: Manear de guardar ip de usuarios
Publicado por: patilanz en 30 Octubre 2014, 13:31 pm
Pensé lo del servidor PHP pero como se haría seguro todo el mundo podría ver la lista de usuarios conectados.


Título: Re: Manear de guardar ip de usuarios
Publicado por: eferion en 30 Octubre 2014, 13:37 pm
A ver, si no quieres que las IPs pasen a ser públicas lo mejor es tener un servidor central.

* Un usuario se conecta al usuario usando un usuario y contraseña
* El servidor marca a este usuario como activo en su base de datos. No necesita almacenar la IP porque mantiene una conexión activa con el usuario.
* El usuario puede pedir bien una lista de usuarios conectados (obtiene nombres o alias) o bien una lista de "pizarras" activas
* El usuario elige conectarse a una pizarra... el servidor centraliza las conexiones para que todos los integrantes puedan compartir información. Nadie sabe dónde se encuentran los demás.
* Cuando el usuario abandona el sistema o pasa cierto tiempo de inactividad, el servidor lo marca como desconectado y cierra la conexión con el mismo.



Título: Re: Manear de guardar ip de usuarios
Publicado por: ivancea96 en 30 Octubre 2014, 13:55 pm
Pensé lo del servidor PHP pero como se haría seguro todo el mundo podría ver la lista de usuarios conectados.

Un servidor PHP es exactamente igual a un servidor en otro lenguaje (en cuanto a privacidad).
El PRO que tiene, es que estará teóricamente abierto 24/7, y que tendrá un dominio o subdominio, en vez de una IP.


Título: Re: Manear de guardar ip de usuarios
Publicado por: daryo en 30 Octubre 2014, 14:26 pm
bases de datos cifradas+ un servidor php


Pensé lo del servidor PHP pero como se haría seguro todo el mundo podría ver la lista de usuarios conectados.

para eso existen los usuarios y contraseñas. si no tienes la contraseña no podras ver la lista de usuarios.Parece evidente pero lo pongo por la pregunta :P