Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   P2P con Indy10 (https://www.clubdelphi.com/foros/showthread.php?t=83997)

CarlosD18 26-08-2013 15:27:37

P2P con Indy10
 
Buenas, miren, hice un programa hace poco de tipo cliente-servidor con los componentes TIdTCPServer y TIdTCPClient que intercambia datos entre cada uno de los clientes que estén conectados pero tengo tres problemas capitales con esto:

1. Mi IP es dinámica, por ende el cliente no tiene una dirección específica a la que conectarse.
2. Uso un servidor, esto quiere decir que tengo una especie de red centralizada, lo que no es mi objetivo, quiero una red abierta donde todos hagamos parte de cliente y parte de servidor, que actuemos como nodos en la red y podamos intercambiar datos entre nosotros.
3. Soy novato en INDY.

No tengo ni la más mínima idea de si voy por buen camino o si estoy haciendo un desastre, una especie de spaguetti con mi código pero si alguien sabe cómo hacer mi propio p2p o tenga recomendaciones que hacerme se lo agradecería.

Julián 26-08-2013 19:50:43

Yo hice, por si te dá alguna idea, hace mucho mucho mucho tiempo, antes de que se inventara el messenger, y antes del p2p, claro, un programa que venia a resolver ese mismo problema: debía ser un cliente-servidor tcp, pero como las ip's de la época, de cuando andabamos con modems a 33.6, eran dínamicas, pues me inventé un protocolo que venía a funcionar, no recuerdo exactamente, pero era mas o menos así:

Se trataba de un solo programa que podía hacer de servidor o de cliente, o de ambos a la vez, claro.
El programa tenía una lista de url's del tipo: http://loquesea.com/servers.txt que se bajaba al inicio. Cada archivo servers.txt podía tener una lista de ip's en dónda cada línea tenia un formato, mas o menos, asi:
IP:PUERTO:ACTIVO:FECHA:CLIENTES: DESCRIPCION
IP era una IP o un nombre de host y PUERTO el puerto en dónde se suponía que podía haber un server al que conectarse.
ACTIVO es un 0 ó un 1, que indica si dicho server estaba abierto o cerrado en la fecha indicada en FECHA. CLIENTES era el número de clientes conectados a docho server.
Y no recuerdo si había algún parámetro mas. Es que ya hace tiempo, jeje.

Bien, pues cuando ejecutabas el programa tenias la opción de conectarte a cualquier server que estuviese abierto, y como podías saber (por la variable CLIENTES) en qué server "había mas gente", pues lo normal era conectar automáticamente al server con mas clientes.

Ah, normalmente, cada usuario podía elegir si quería hacer o no de server, y en caso afirmartivo necesitaba una url en dón de poder poner (vía ftp, por ejemplo) su archivo servers.txt con su línea corresponediente a su ip,puerto, etc, además de, opcionalmente, otras líneas pertenecientes a otros servers, por ejemplo de su confianza, o lo que fuera.

Lo normal era ejecutar el programa y encontrar un server al que conectarse, y cuando estabas conectado, también podia saberse cuales de los otros clientes podían hacer de server, y además, cada uno de ellos tenia una prioridad, que no recuerdo como se asignaba pero era algo muy sencillito, así que si el servidor actual decidía desconectarse pues los demás clientes se conectaban de inmediato al siguiente en la lista, según la prioridad de la que hablabamos.

Tambien podía alguien solicitar hacer de server, por ejemplo porque tuviese una buena conexión, o porque pensara estar mucho tiempo online.

Como veis era un protocolo muy sencillo, y supongo que bastante chapuzas, pero funcionaba, muy bien, por cierto. Lo que no se es si algo parecido tendría utilidad en estos tiempos.

Un saludo.

CarlosD18 29-08-2013 17:41:36

Cita:

El programa tenía una lista de url's del tipo: loquesea.com/servers.txt que se bajaba al inicio.
Me diste una idea excelente, en verdad MIL GRACIAS.

Primero por lo simple:
Mi IP cambia cada vez que me conecto. Si cada vez que abro el servidor actualizo el archivo servers con mi nueva ip, el cliente solo tiene que entrar al host y descargar el servers.txt..
Bien hasta allí pero.. ¿Dónde puedo subir un archivo y poder, además de descargarlo, modificarlo desde server.exe?

Julián 30-08-2013 22:17:50

Cita:

Empezado por CarlosD18 (Mensaje 466228)
Bien hasta allí pero.. ¿Dónde puedo subir un archivo y poder, además de descargarlo, modificarlo desde server.exe?

Pues necesitas un servidor http o ftp o trivialftp o ... al que el server.exe se conecta y le sube el servers.txt.
Si es uns ervidor http el cliente solo tiene que conectarse con un cliente http a
http://ip_o_nombrededominio/servers.txt
y listo. Y si es ftp, pues lo mismo, se conecta y lo baja.

Para el http puedes usar cualquier web que administres o en la que te dejen un acceso, o puedes usar una maquina de tu red con salid a internet y un server http que puedes incluso hacerte tu mismo con los indy o los ics.

Un saludo.


La franja horaria es GMT +2. Ahora son las 05:12:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi