Hola déjame aclarar mi pregunta. Dos personas que usan mi aplicación están conectadas a internet. Ambos tienen el IP de cada uno y quieren chatear (como Y! Messanger) entre ellos. Creo que necesito usar componentes de Indy; ¿derecho? ¿Qué componente debería usar? Gracias de antemano¿Cómo puedo transferir datos entre dos aplicaciones delphi a través de Internet?
Respuesta
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.
¿Ya has visto alguna de las demostraciones en Indy's website?
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
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.
+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
- 1. Dos computadoras encontrándose entre sí a través de Internet
- 2. ¿Cómo puedo transferir datos entre 2 bases de datos MySQL?
- 3. ¿Cómo transferir "datos" entre dos dispositivos (Android, iPhone)?
- 4. Transferir datos grandes entre aplicaciones .net en la misma computadora
- 5. compartir datos entre dos aplicaciones de iphone
- 6. La forma más fácil de transferir datos por Internet, Python
- 7. Intercambio de datos entre dos aplicaciones
- 8. ¿Cómo puedo enviar datos a través de Internet usando un socket?
- 9. ¿Enviar datos de teléfono a teléfono a través de internet?
- 10. Compartir datos de iCloud entre dos aplicaciones
- 11. Intercambio de datos entre dos aplicaciones en PC en LAN
- 12. ¿Cómo transferir un archivo entre dos computadoras conectadas en python?
- 13. ¿Cómo intercambiar datos entre dos aplicaciones de Python?
- 14. Transferir archivo a través de ssh
- 15. ¿Cómo transferir archivos de una computadora a otra a través de la red usando Java?
- 16. Transferir la configuración de Python a través de diferentes PC
- 17. sincronización de relojes a través de Internet
- 18. Transferir datos de sesión entre hosts virtuales Apache
- 19. ¿Es posible conectar un zócalo entre dos dispositivos móviles (iPhones) a través de Internet?
- 20. Transferir datos entre bases de datos con PostgreSQL
- 21. cómo transferir datos extra de un fragmento a otro a través de la actividad
- 22. gamekit a través de Internet
- 23. comunicación android entre dos aplicaciones
- 24. ¿Cómo puedo desactivar un servicio a través de Delphi?
- 25. iOS Bonjour a través de Internet
- 26. ¿Cómo transferir algunos datos a otro Fragmento?
- 27. ¿Cómo puedo enviar cadenas entre dos computadoras?
- 28. Transferencia de datos entre dos dispositivos Wifi
- 29. comunicación entre dos aplicaciones flexibles
- 30. ¿Cómo transferir un java.util.Map a través de un servicio web?
+1 por una dosis de realidad. Cortafuegos, proxies, NAT. –
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. –