Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-03-2014
rabata2001 rabata2001 is offline
Miembro
 
Registrado: nov 2010
Posts: 88
Poder: 14
rabata2001 Va por buen camino
enviar mensaje entre aplicaciones delphi distinto PC

Buenas a todos,

Mi deseo es enviar un mensaje desde una aplicación a otra (unidireccional, no bidireccional) en Delphi.

Estoy probando en envío con TIndyTCPCliente y TTCPIndyServer (Los UDP's a veces se salta algún mensaje, los TCP's son más fiables)


¿Existen otros componentes con los que enviar un mensaje unidireccional (tan sólo ne un sentido) de una aplicación a otra en distinto PC pero de la misma red local.?

Gracias y Saludos,

Javier
Responder Con Cita
  #2  
Antiguo 11-03-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola rabata2001.

Tenes otra opción en este enlace: Exchanging Data over the Network using Delphi

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 11-03-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
rabata2001,

Cita:
Empezado por rabata2001
...¿Existen otros componentes con los que enviar un mensaje unidireccional (tan sólo en un sentido) de una aplicación a otra en distinto PC pero de la misma red local?...
Revisa esta información:
Nota: La librería Synapse no utiliza componentes ni requiere instalación, solo se debe hacer referencia a las unidades de la librería en el Library Path de Delphi pero con la acotación de que no funciona en Win64.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 11-03-2014 a las 22:19:18.
Responder Con Cita
  #4  
Antiguo 20-03-2014
rabata2001 rabata2001 is offline
Miembro
 
Registrado: nov 2010
Posts: 88
Poder: 14
rabata2001 Va por buen camino
Buenas,

Me interesaría algo que funcione correctamente para win32 y win64.

Simplemente voy a enviar un mensaje desde un sitio a otro y continuadamente (por lo tanto no deseo cerrar la conexión), desearía un porcentaje alto de que ha llegado el dato (udp no tiene porque llegar) y los tcp se quedan congelado el servidor si tiene algún cliente conectado

¿Cómo podría cerrar las conexiones desde mi indytcpserver sin que se congele aunque tenga un cliente conectado (el servidor cierra a sus clientes y su conexion)?.

1 se conecta el servidor / cliente
2. el cliente envía datos al servidor
3. el cliente o el servidor se cierran y no se congelan

Gracias y Saludos.
Responder Con Cita
  #5  
Antiguo 20-03-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
UDP es rápido y no requiere conexión previa. Asegurar la llagada del paquete es responsabilidad del programador, basta con enviar una confirmación de recibido. TCP es más seguro porque lo automatiza el protocolo. La congelación de ambos protocolos lo resuelves con threads. Si quieres un buen control, vete a bajo nivel con sockets.

Saludos.
Responder Con Cita
  #6  
Antiguo 20-03-2014
rabata2001 rabata2001 is offline
Miembro
 
Registrado: nov 2010
Posts: 88
Poder: 14
rabata2001 Va por buen camino
Si tiro por el camino de UDP, prácticamente es controlar la gestión del flujo:

1. enviar desde cliente a servidor
2. recibe el servidor y enviar ack al cliente
3. si el cliente no recibe ningún ack, vuelve a enviar (numero de reintentos)

Me sigue gustando más la idea de TCP. ¿Podrías citarme algún ejemplo para usarlo y evitar la congelación cuando intente desconectar el servidor con algún cliente enganchado?.

Gracias y saludos.
Responder Con Cita
  #7  
Antiguo 20-03-2014
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Yo hice una aplicación que lo que hace es, mediante un timer, revisar en una base de datos si el usuario de ese equipo tiene pendiente de leer algún mensaje dirigido a él. Al principio lo hice por IP pero para que te mostrara tus mensajes en cualquier equipo lo cambie por el nombre de usuario que iniciaba sesión en windows. El programa también admite programar cuando quieres que una persona vea el mensaje con fecha y hora.

Te lo digo por darte otra idea.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #8  
Antiguo 20-03-2014
rabata2001 rabata2001 is offline
Miembro
 
Registrado: nov 2010
Posts: 88
Poder: 14
rabata2001 Va por buen camino
Muchas gracias por tu aportación. ya la había sopesado, de hecho alguna cosas en mi sistema las paso así, pero me gustaría tener un poco de mejor rendimiento que sea algo directo, la bbdd es muy usada y me gustaría evitarlo.

Saludos.
Responder Con Cita
  #9  
Antiguo 20-03-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por rabata2001 Ver Mensaje
Me sigue gustando más la idea de TCP. ¿Podrías citarme algún ejemplo para usarlo y evitar la congelación cuando intente desconectar el servidor con algún cliente enganchado?.
Controlando el error de recv, podemos saber si el servidor se descotectó...

Te pongo un fragmento en C a bajo nivel con sockets
Código:
  //creamos el Sock y conectamos al servidor
  Sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  if(Sock !=-1){
    //Definimos la dirección IP y Puerto del servidor
    host = gethostbyname("PCSERVER");
    direc.sin_family=AF_INET;
    direc.sin_port = htons(Port);
    direc.sin_addr = *((struct in_addr *)host->h_addr);
    ZeroMemory(direc.sin_zero, 8);
    connect(Sock, (sockaddr*)&direc, sizeof(sockaddr));

    // Saludo al servidor
    send(Sock, Saludo, lstrlen(Saludo), 0);

    // Mientras el Sock siga conectado
    do {
      Len = recv(Sock, Buffer, sizeof(Buffer), 0);
      if(Len>0){
          // Accciones pertinentes....
      }
    } while(Len!=0 && Len!=-1 && !Salir); 
    closesocket(Sock);
  }
Si el código lo encierras en un thread, el resto de la app no sufrirá esperas en connect, send y recv.

Saludos.
Responder Con Cita
  #10  
Antiguo 20-03-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
rabata2001,

Cita:
Empezado por rabata2001
...Estoy probando en envío con TIndyTCPCliente y TTCPIndyServer...
Revisa esta información:
Espero sea útil

Nelson.
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
Se podrá Enviar un mensaje SMS a una Aplicación en Delphi???? AGAG4 Internet 19 14-03-2013 04:06:18
Paso de datos entre aplicaciones delphi distinto PC rabata2001 Varios 2 04-12-2010 14:38:00
enviar mensaje outlook con delphi richy08 Varios 6 18-07-2008 21:58:41
Compatibilidad entre aplicaciones ASP.NET entre Delphi 8 .Net y Visual Studio.Net kenyamg .NET 0 21-02-2007 07:30:33
enviar un mensaje a un celular desde una aplicacion delphi chabelo07 Internet 1 29-11-2006 21:17:23


La franja horaria es GMT +2. Ahora son las 06:38:56.


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