FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Cita:
Todas las instancias de RDP levantan el mismo "MyApp.exe". En el ejemplo quedó el verdadero nombre, pero digamos que lo que se intenta con esa linea es enviar el mensaje a ese EXE y no a otro. Sería algomo como esto: Tal vez esto no sea la mejor solución con RDP y es por eso mi consulta, para saber si hay algo mejor.
__________________
Gracias de antemano por vuestra ayuda. ·.:*:.·Yako·.:*:.· |
#2
|
||||
|
||||
Cita:
Otra solución con sockets es implementar en MyApp un hilo con un cliente y que Monitor.exe sea un servidor. Si el protocolo es UDP no hace falta conexión previa u puedes enviar un datagrama UDP a la IP Broadcast con lo que todas las instancias de MyApp, lo recibirán. Previamente has de calcular la dirección Broadcast de tu red. Saludos. |
#3
|
||||
|
||||
Cita:
Cita:
¿Entoneces es posible utilizar UDP aunque haya varias instancias RDP ?
__________________
Gracias de antemano por vuestra ayuda. ·.:*:.·Yako·.:*:.· |
#4
|
||||
|
||||
Es posible tener varios servidores escuchando en la misma máquina por el mismo puerto, no es una situación común pero no es un imposible. Para esto está el Multicast.
Te pongo un ejemplo de servidor socket multicast en un thread para poder compaginarlo con una app de ventanas:
Este servidor se pone a la escucha en el puerto 9090 y podemos tener varios en ejecución. Ahora el cliente debe enviar mensajes UDP al Broadcast por el puerto 9090, para ello debemos calcular esa dirección. Te pongo un ejemplo de cliente que envía un mensaje a todos los servidores a la vez, estén o no en la misma máquina:
Probado en Win10 y compilado con Delphi 7 Espero que resuelva tu duda y en general la duda que originó ente hilo. Saludos. |
#5
|
||||
|
||||
Muchas, pero muchas, gracias a migo escafandra... pero esto es muy elevado para mi entendimiento
Primero, porque creo yo tengo un error de concepto: -En este caso, existe un pequeño ejecutable que monitorea un proceso. Llamemos a este "2do.exe" -Luego está la aplicacion principal, que cada usurario levanta mediante una conexion RDP (Windows). Llamemos "1ro.exe". O sea, hay varios "1ro.exe" y un solo "2do.exe" Entonces, el programa monitor (2do.exe) cada vez que realiza una operación, debería enviar a modo de mensaje de texto, ese resultado a cada instancia del programa (1ro.exe) y este, cuando lo reciba, lo mostrará en pantalla o como se prefiera. Yo pensaba que el monitor debería ser el Servidor y las otras aplicaciones los clientes, pero parece que es a la inversa, no? Segundo, observo que utilizas la unidad WinSock. ¿Es una unidad estandar de Delphi o solo si adquieres el paquete Indy de las versiones Archictect/Professional? Tercero: he instalado por sugerencia de varios, unos componentes "free" denominados Overbyte ICS que tienen infinidad de componentes de conexion TCP/UDP entre ellos: > OverbyteIcsWSocket.pas Winsock component - TCP, UDP, DNS,... > OverbyteIcsWSocketE.pas Register procedure and property editor for TWSocket > OverbyteIcsWSocketS.pas Winsock component for building servers > OverbyteIcsWSocketTS.pas Winsock component for building multithreaded servers > OverbyteIcsDnsQuery DNS lookup component - useful for getting MX records ...que aun no se ni cómo utilizarlos. ¿Supones que podría reemplazar los WinSocks por ellos o no es conveniente?
__________________
Gracias de antemano por vuestra ayuda. ·.:*:.·Yako·.:*:.· |
#6
|
||||
|
||||
Cita:
Cita:
Cita:
Ignoro como quieres que 1ro.exe trabaje con los mensajes recibidos, por eso en el ejemplo puse un MessageBox. Ten en cuenta que todo el código servidor está en un Thread, lo que significa que no puedes usar a las bravas la VCL desde él. Para sincronizar el hilo con el formulario debes usar el método Synchronize o mejor aún en este caso, mensajes Windows desde el hilo a la ventana del formulario que elijas, para ello basta con que al crear el hilo le pases el Handle de dicha ventana y uses SendMessage desde el hilo, cuando recibas un mensaje UDP (que viene de Monitor.exe). En tu formulario generas una función de tratamiento de esos mensajes personalizados y funcionará como un evento. Saludos. Última edición por escafandra fecha: 13-04-2017 a las 17:33:59. |
#7
|
||||
|
||||
A modo de ilustración, te muestro el servidor modificado para disparar un evento al recibir un mensaje desde el cliente. En este caso, el formulario incorpora un TLabel donse se escribirá el mensaje de texto recibido. Uso un mensaje de Windows pero también podrías modificarlo para usar Synchronize.
Saludos Última edición por escafandra fecha: 13-04-2017 a las 17:52:02. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Dos instancias de SQL Server parecen ser la misma | Faust | MS SQL Server | 2 | 21-10-2011 23:13:07 |
¿Cómo usar mutex e impedir dos instancias de la misma app? | Blaster | OOP | 1 | 11-08-2008 04:05:29 |
Cuantas instancias de nuestro exe están corriendo | seoane | Trucos | 3 | 06-03-2007 01:58:41 |
Compartir "objetos" entre varias instancias | mafebresv | Varios | 4 | 16-01-2006 23:38:23 |
Como evitar 2 instancias de una misma ventana hija | edgusano | .NET | 5 | 12-12-2005 16:40:40 |
|