![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Amigo GluGlu, finalmente has encontrado alguna solución a esto?... Estoy por pasar por este mismo inconveniente.
Tengo una aplicación "MyApp.exe" donde cada usuario levanta una instancia de ella, con conexiones de Escritorio Remoto. Incluso, en la sesion del Administrador en el propio servidor (WinServer2008) ciertas veces existe tambien otra instancia en ejecución de dicho programa. Además de esto, un segundo ejecutable "Monitor.exe", está siempre en funcionamiento en la sesion del Administrador y realiza un proceso donde las distintas etapas del mismo deben ser notificadas a la/las instancias del programa "MyApp.exe" Actualmente lo tenía resuelto mediante el uso de Messages de Windows, esto es: Desde el programa "Monitor.exe" cada vez que se necesita notificar algo, se invoca la función SendAppMessage() que hace esto:
Por otro lado, el programa "MyApp.exe", siempre está "a la escucha" de esos mensajes mediante un evento que se dispara de forma automática cuando aparece un mensaje invocando al proceso RecibirAppAmessage() que es este:
Lo malo de esto es que, una vez que "MyApp.exe" "publica" el mensaje, lo toma la primera sesion abierta de "MyApp.exe" que logra mostrar el mensaje en su pantalla, pero el resto de las instancias no reciben nada. O sea, lo consume la primera instancia abierta y "se borra" para el resto. Debido a esto, estaba pensando en realizar mensajes UDP, pero me encuentro con el problema planteado aqui de las instancias de Escritorio Remoto y el problema de la apertura del PORT. Como has resuelto esto?
__________________
Gracias de antemano por vuestra ayuda. ·.:*:.·Yako·.:*:.· |
|
#2
|
||||
|
||||
|
El problema lo tienes porque usas FindWindow para localizar el Handle de la ventana donde enviarás el mensaje. Debes enumerarlas todas y enviar el mensaje a las que correspondan con tu App, normalmente las conocerás por el nombre de la clase de ventana. Revisa EnumWindows y GetClassName.
Saludos. |
|
#3
|
||||
|
||||
|
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·.:*:.· |
|
#4
|
||||
|
||||
|
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. |
|
#5
|
||||
|
||||
|
Cita:
Cita:
¿Entoneces es posible utilizar UDP aunque haya varias instancias RDP ?
__________________
Gracias de antemano por vuestra ayuda. ·.:*:.·Yako·.:*:.· |
|
#6
|
||||
|
||||
|
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. |
|
#7
|
||||
|
||||
|
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·.:*:.· |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|