Sugerencias sobre cómo escribir un sistema de mensajería IP TCP(Cliente/Servidor) usando Delphi 2010
sockets delphi-2010 (6)
Me gustaría escribir un sistema de mensajería utilizando TCP IP en Delphi 2010. Me gustaría saber cuáles son mis mejores opciones para usar los componentes estándar delphi 2010 / componentes indy para hacer esto.
Me gustaría escribir un servidor que escuche y reenvíe mensajes a todas las máquinas de la red que ejecutan un cliente.
1.) a.) Los clientes pueden enviar un mensaje al servidor para ser reenviado a todos los otros clientes b.) Los clientes escuchan los mensajes de otros remitentes (a través del servidor) y muestran los mensajes.
2.) a) El servidor puede enviar un mensaje a todos los clientes b) El servidor reenvía los mensajes de los clientes a todos los demás clientes
gracias por cualquier sugerencia
NOTA: No estoy escribiendo un programa de chat o mensajería instantánea. Esto es simplemente un sistema donde los usuarios pueden enviar alertas / mensajes a otros usuarios, ¡no pueden responder el uno al otro! NO enlaces comerciales, shareware, etc. - ¡por favor! Me gustaría saber cómo escribiría este tipo de sistema y qué enfoques tomaría, y posiblemente la arquitectura de mensajería IP TCP que usaría. Ya sea directamente API de Winows, componentes Indy, etc., etc.
Hay un cliente de mensajería instantánea de Aid Aim: http://www.aidaim.com/products/msgcommunicator/manual_instant-messaging-im-sdk/index.php
Para que esto funcione de manera confiable es más trabajo de lo que piensas, un esfuerzo del 5% para que funcione y un esfuerzo del 95% para garantizar que funcione en todas las circunstancias, incluidos los abandonos de la red, etc. Si vas aquí ( http: // www) .csinnovations.com / framework_delphi.htm ) puede ver cómo implementé mi marco de comunicaciones entre procesos. El material del TCP comprende aproximadamente 10,000 líneas de código usando los componentes de Indy.
Parece mensajes de publicación y suscripción. kbmMW ofrece uno.
Si quieres ahorrarte un poco de trabajo y usar una solución lista:
en el orden de arriba Los dos últimos enumerados más bien con fines informativos.
IMO 0MQ es la mejor opción: está bien pensado, es liviano, rápido y confiable.
Si solo se trata de Windows y no desea utilizar bibliotecas de terceros, puede omitir TCP / IP e ir a Mailslots .
Editar : si desea una entrega garantizada, que las tuberías con nombre es una mejor solución. Esta pregunta SO tiene algunas buenas respuestas con Delphi named pipe examples.
Una ranura de correo es un mecanismo para las comunicaciones entre procesos (IPC) en una sola dirección. Las aplicaciones pueden almacenar mensajes en una ranura de correo. El propietario de la ranura de correos puede recuperar los mensajes que están almacenados allí. Estos mensajes generalmente se envían a través de una red a una computadora específica o a todas las computadoras en un dominio específico. Un dominio es un grupo de estaciones de trabajo y servidores que comparten un nombre de grupo .
No necesitan un dominio de Windows, funcionan a través de una LAN.
DelphiPages tiene un buen deterioro en hacer IPC en Delphi , incluyendo mailslots.
--jeroen
Acerca del uso de indy, como en esta demostración: indy10clieservr.sourceforge.net O usando el paquete TServerSocket
y TClientSocket
-> ahora con la muestra de demostración x64 de INDY