Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Mil gracias amigos, acabo de terminar un pequeño ejemplo con tuberias con nombre y va genial.
Mi intencion es seguir probando el resto de modos de hacer esto para ir viendo como funcionan.
Una cosa, si las tuberias usan memoria compartida ¿en que se diferencia de usar memoria compartida como indicas?
Responder Con Cita
  #2  
Antiguo 29-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
Vale, ya lo he conseguido tambien con SendMessage pero me gustaria que fuera sincronico y con consolas en C. Yo lo he hecho con dos forms en C++builder y es asincronico, o sea, que puedes enviar sin haber recibido. No se si me explico.
¿Alguien puede echarle un vistazo y ayudarme con eso?
Archivos Adjuntos
Tipo de Archivo: rar Comunicacion con SendMessage y WM_COPYDATA.rar (17,5 KB, 5 visitas)
Responder Con Cita
  #3  
Antiguo 29-09-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Para sincronizar las app puedes enviar el dato y luego esperar una respuesta antes de enviar mas datos. Esa respuesta debe actuar como semáforo.

Si usas sokets síncronos el sincronismo te viene dado pero te bloquea la app mientras espera una respuesta.

Saludos.
Responder Con Cita
  #4  
Antiguo 29-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
o sea que me creo por ejemplo una variable booleana global que uso como semaforo para indicar si ya he recibido respuesta o no ¿Es eso? Y cuando dices congelado ¿Te refieres a que no puedo escribir? ¿O te refieres a que se queda el form totalmente bloqueado? Lo de los sockets no tengo ni idea y pensaba mirarlo el ultimo pero ¿podria ejecutarse en hilos independientes para evitar el bloqueo? Sobre lo que estoy ahora, me gustaria seguir mirando la opcion del wm_copydata con sendmessage pero hacerlo con aplicaciones de consola (preferiblemente en c). Se que para capturar esos mensajes tengo que usar un callback donde se gestione el mensaje que yo desee y usar el WindowProc del proceso pero ¿Como hago eso en una aplicacion de consola?
Responder Con Cita
  #5  
Antiguo 29-09-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por aguml Ver Mensaje
o sea que me creo por ejemplo una variable booleana global que uso como semaforo para indicar si ya he recibido respuesta o no ¿Es eso?
Si, aunque no necesariamente tiene que ser global.

Cita:
Empezado por aguml Ver Mensaje
Y cuando dices congelado ¿Te refieres a que no puedo escribir? ¿O te refieres a que se queda el form totalmente bloqueado? Lo de los sockets no tengo ni idea y pensaba mirarlo el ultimo pero ¿podria ejecutarse en hilos independientes para evitar el bloqueo?
Se bloquea el hilo que está a la escucha. Generalmente se usan hilos para no bloquear la app. Existen métodos para evitar el bloqueo pero entonces precisas de semáforos si quieres mantener el sincronismo. Los sockets con muy interesantes porque la comunicación puede ser con cualquier app en cualquier PC de la red.

Cita:
Empezado por aguml Ver Mensaje
Sobre lo que estoy ahora, me gustaria seguir mirando la opcion del wm_copydata con sendmessage pero hacerlo con aplicaciones de consola (preferiblemente en c). Se que para capturar esos mensajes tengo que usar un callback donde se gestione el mensaje que yo desee y usar el WindowProc del proceso pero ¿Como hago eso en una aplicacion de consola?
Revisa PostThreadMessage aunque no lo he probado para WM_COPYDATA. Otra posibilidad es crear una ventana no visible, usando la API, que se encargue de recibir los mensajes.


Saludos.

Última edición por escafandra fecha: 29-09-2014 a las 22:25:37.
Responder Con Cita
  #6  
Antiguo 29-09-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Te recomiendo que leas un poco sobre como es la arquitectura de apps distribuidas, para que no hagas vueltas innecesarias como usar variables boolean tratando de implementar (macheteramente!) un lock, osea: La sugerencia que te dan y las ideas de este thread son la forma incorrecta - e innecesaria- de implementar lo que buscas. A proposito, seria bueno que tuvieras claro exactamente que es lo que quieres. Ademas, es mejor primero definir como son las cosas y LUEGO definir que tecnologia usas, no vaya ser que pelees contra la corriente y trates de hacer en X lo que seria natural en Y. Por ejemplo, es un sinsentido intentar que un protocolo asincronico se vuelva sincronico... sabiendo que podrias usar un sincronico desde el inicio.

Un excelente compendio de muchas de esas arquitecturas esta en la guia de 0mq:

http://zguide.zeromq.org/page:all

P.D: Mira si lo que buscas se acomoda a uno de los estilos que se plantean aqui, como un modelo PUSH-SUB, REQ-REP, FAN-OUT, etc

Te recomiendo que si no sabes exactamente que usar, 0mq es una buena eleccion que cubre casi de todo, a menos que necesites que funcione a escala internet. En ese caso, usa HTTP (sincro) o WebSocket (async).
__________________
El malabarista.

Última edición por mamcx fecha: 29-09-2014 a las 22:42:37.
Responder Con Cita
  #7  
Antiguo 29-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 14
aguml Va por buen camino
bueno, necesitar no necesito ninguno, solo queria conocer las opciones y probarlas para ver como son per esta pregunta no surge por necesidad. Es pura curiosidad y definir como son las cosas... Pues no puedo hacerlo porque la idea es ir probando todas las opciones o al menos las mas interesantes.

Última edición por aguml fecha: 29-09-2014 a las 23:00:31.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ellas y Ellos jcarteagaf Humor 1 06-08-2011 03:43:05
Llamada entre ventana usando paquetes. PittyDelphi OOP 3 27-01-2011 12:28:37
¿Saben algo de ellos? roman La Taberna 11 18-11-2008 18:59:07
Comunicación TCP/IP entre dos programas usando componentes INDY Roger_Delphi Internet 2 20-10-2008 14:02:49
Comunicacion entre procesos walito Varios 0 14-11-2007 21:55:53


La franja horaria es GMT +2. Ahora son las 12:10:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi