FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
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·.:*:.· |
#2
|
||||
|
||||
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. |
#3
|
||||
|
||||
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. |
#4
|
||||
|
||||
Cita:
Ya generé ambos ejemplos, el cliente y el server, pero no pasa nada... Inicio primero el Server y luego el cliente, hago clic en el Button1 y nada.... Inicio primero el Cliente y luego el Server, hago clic en el Button1 y nada.... Mi LAN es 192.168.14.xxx y la funcion GetBrodcastAddress; está devolviendo correctamente 192.168.14.255 Probé otros Port y nada... que puede ser ?
__________________
Gracias de antemano por vuestra ayuda. ·.:*:.·Yako·.:*:.· |
#5
|
||||
|
||||
Posiblemente dependa de la versión del delphi que uses.
La versión Cliente que he probado con delphi7 y Berlin es esta:
Ten en cuenta que el UNICODE juega malas pasadas. Subo un proyecto con fuentes y ejecutables compilados. Última edición por escafandra fecha: 13-04-2017 a las 19:13:11. |
#6
|
|||
|
|||
Excelente aporte Escafandra!!!
|
#7
|
|||
|
|||
Escafandra, te hago el siguiente planteo que difiere del expuesto hasta ahora.
Yo tengo actualmente un programa que actúa como servidor usando TServerSocket en modo nonblocking que envía cada 2 segundos registros con el método SendBuf a cada uno de los clientes (TClientSocket) que se hayan conectado. El tamaño de cada paquete comprimido puede ser algo mas de 8k. Como suelen ser varias pc's clientes, esto genera bastante trabajo del lado servidor que ademas tiene que ir recolectando y haciendo muchos calculos, luego volcar la información a sus respectivos registros, comprimirlos y luego enviar a cada cliente. Si esto quisiera hacerlo con UDP, como debería ser ya que de este modo haría un solo envío? Gracias. |
|
|
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 |
|