Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-08-2013
CarlosD18 CarlosD18 is offline
Registrado
NULL
 
Registrado: feb 2013
Posts: 2
Poder: 0
CarlosD18 Va por buen camino
Cool 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.
Responder Con Cita
  #2  
Antiguo 26-08-2013
Avatar de Julián
Julián Julián is offline
Merodeador
 
Registrado: may 2003
Ubicación: en mi casa
Posts: 2.019
Poder: 10
Julián Va por buen camino
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.
__________________
"la única iglesia que ilumina es la que arde"
Anonimo
Responder Con Cita
  #3  
Antiguo 29-08-2013
CarlosD18 CarlosD18 is offline
Registrado
NULL
 
Registrado: feb 2013
Posts: 2
Poder: 0
CarlosD18 Va por buen camino
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?
Responder Con Cita
  #4  
Antiguo 30-08-2013
Avatar de Julián
Julián Julián is offline
Merodeador
 
Registrado: may 2003
Ubicación: en mi casa
Posts: 2.019
Poder: 10
Julián Va por buen camino
Cita:
Empezado por CarlosD18 Ver Mensaje
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 única iglesia que ilumina es la que arde"
Anonimo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Indy10 Ver. 4908 - BytesToString gluglu Varios 2 12-01-2013 13:45:41
problema con reportmanager e indy10 gmontes Impresión 4 09-05-2011 18:38:44
indy9 a indy10 waremovil C++ Builder 0 23-03-2011 19:33:31
TIdFTPServer Indy10 dvlt Internet 0 25-01-2010 09:57:49
Indy10 lduron Varios 2 19-03-2009 17:56:07


La franja horaria es GMT +2. Ahora son las 10:00:54.


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
Copyright 1996-2007 Club Delphi