2010-11-30 34 views

Respuesta

3

En general, está buscando crear una aplicación de tipo "Cliente/Servidor". Una búsqueda rápida en Google para "ejemplo de servidor de cliente indy" arroja muchos resultados, incluido este: http://www.devarticles.com/c/a/Delphi-Kylix/A-Real-World-Client-Server-Application-in-Delphi/

En realidad, esto se vuelve mucho más complicado cuando tiene firewalls y NAT con direcciones IP privadas. Tendrá que considerar cómo se moverá su aplicación a través de este tipo de tecnologías.

+0

+1 por una dosis de realidad. Cortafuegos, proxies, NAT. –

+1

Si ambos programas están siendo controlados directamente por los usuarios, tienen la IP de cada uno y quieren hablar directamente entre sí como iguales, eso no es cliente/servidor; eso es peer-to-peer, y las técnicas para hacerlo funcionar son diferentes. –

2

No necesita utilizar componentes Indy, solo necesita cualquier cosa que pueda manejar las comunicaciones a través de la red. Cualquier pila de red HTTP o sockets funcionará. Indy es el estándar de hecho para Delphi Win32.

Para hacer comunicaciones de red, necesitará crear un objeto o servicio detector en la máquina A y un objeto emisor en la máquina B para enviar un mensaje de red de A a B. Para enviar un mensaje de B a A, lo hará también necesita una ruta inversa: 4 objetos en total para realizar comunicaciones bidireccionales. Algunas envolturas de objetos ocultan este detalle internamente. No recuerdo de improviso si Indy oculta esto o no.

Probablemente sería más fácil si utiliza un protocolo TCP/IP común para su máquina a las comunicaciones de la máquina, como HTTP. Esto hará que sea más fácil obtener sus conexiones a través de firewalls y proxies que existen frecuentemente entre usuarios arbitrarios. Para evitar conflictos con cualquier servicio web HTTP que pueda estar ejecutándose en cualquier máquina, debe usar un número de puerto personalizado con la dirección IP: 192.168.1.10:12345, no el puerto del servidor web HTTP estándar 80. Esto es lo que la mayoría de los IM los clientes lo hacen

3

Similar a lo que dijo Scott, creo que su mayor problema es lograr que hablen entre sí. Mis computadoras en casa pasan por un enrutador, que bloquea todas las solicitudes de conexión entrantes (es decir, solicitudes para iniciar una conversación entre dos computadoras) desde Internet. Mis computadoras pueden enviar solicitudes de conexión FUERA e iniciar una conversación de esa manera, pero a menos que modifiques el enrutador (reenvío de puertos) mis computadoras no pueden recibir solicitudes de conexión.

Necesita un servidor en alguna parte para que ambas personas se conecten, que luego puede transmitir mensajes de ida y vuelta. Para ser realmente complicado, una vez que se establece la conexión con el servidor, las dos computadoras se pueden poner en contacto directo, pero eso implica paquetes UDP y algo de magia inteligente.

+0

+1 para la magia. pero si quieres que te voten por la mejor respuesta, tu realmente deberías explicar la magia como NAT y rounting ... – PSyLoCKe

Cuestiones relacionadas