2008-12-20 5 views
6

Quiero desarrollar un sencillo programa de chat de LAN sin servidor solo por diversión. Cómo puedo hacer esto ? ¿Qué tipo de arquitectura debería usar?Desarrollando la ayuda del programa Lanless Server Chat!

El año pasado trabajé en TCP, proyecto de aplicación cliente/servidor UDP. Fue simple (el servidor escucha cierto puerto/socket y el cliente se conecta al puerto del servidor, etc.) pero no tengo idea de cómo desarrollarlo " "Programa de Chat LAN sin servidor". ¿Cómo puedo hacer esto? UDP, TCP, Multicast, Broadcast? o ¿Debería el programa comportarse como servidor y cliente?

+0

En caso de que alguien llegue aquí buscando una solución de trabajo, verifique esto, pidgin (multiplataforma) con bonjour/zeroconf. http://www.blog.highub.com/linux/use-bonjour-to-chat-on-ubuntu/ –

Respuesta

10

La manera más simple sería usar UDP y simplemente transmitir sus mensajes en toda la red. Una versión un poco más avanzada sería usar solo la transmisión para descubrir otros nodos en la red.

  • Cada nodo mantiene una lista de pares conocidos.
  • Los mensajes se envían con TCP a todos los compañeros conocidos.
  • Cuando un nodo se inicia, envía una transmisión UDP para descubrir otros nodos.
  • Cuando un nodo recibe una difusión de descubrimiento, se envía "a sí mismo" a la fuente de la emisión, para que sea conocida. El nodo receptor agrega la emisora ​​a su propia lista de pares conocidos.
  • Cuando un nodo sale de la red, envía otra difusión para informar a los nodos restantes que deben eliminar el cliente eliminado de su lista.

También debería considerar el manejo de la caída de nodos sin que ellos informen al resto de la red.

1

El spread toolkit puede ser un poco exagerado para lo que desee, pero es un punto de partida interesante.

De la propaganda:


propagación es un conjunto de herramientas de código abierto que proporciona un servicio de mensajería de alto rendimiento que es resistente a los fallos en las redes de área local y amplia. Extienda las funciones como un bus de mensajes unificado para aplicaciones distribuidas, y proporciona una multidifusión de nivel de aplicación muy ajustada, comunicación grupal y soporte de punto a punto. Los servicios de difusión abarcan desde mensajes confiables hasta mensajes completamente ordenados con garantías de entrega.

Spread se puede utilizar en muchas aplicaciones distribuidas que requieren alta confiabilidad, alto rendimiento y comunicación sólida entre varios subconjuntos de miembros. El kit de herramientas está diseñado para encapsular los aspectos desafiantes de las redes asíncronas y permitir la construcción de aplicaciones distribuidas confiables y escalables.

Spread consiste en una biblioteca con la que están vinculadas las aplicaciones de usuario, un daemon binario que se ejecuta en cada computadora que es parte del grupo de procesadores, y varios programas de utilidad y demostración.

Algunos de los servicios y beneficios proporcionados por Spread:

  • fiable y escalable de mensajería y grupo de comunicación.
  • Una API muy poderosa pero simple simplifica la construcción de arquitecturas distribuidas.
  • Fácil de usar, implementar y mantener.
  • Altamente escalable de una red de área local a redes complejas de área amplia.
  • Admite miles de grupos con diferentes conjuntos de miembros.
  • Habilita la confiabilidad de los mensajes en presencia de fallas de la máquina, bloqueos y recuperaciones de procesos y fusiones y particiones de red.
  • Ofrece una gama de garantías de fiabilidad, pedidos y estabilidad para los mensajes.
  • Énfasis en robustez y alto rendimiento.
  • Algoritmos completamente distribuidos sin punto central de falla.
+0

¿Spread hace algo para solucionar el problema con NAT? –

0

Apples iChat es un ejemplo del mismo producto que está visualizando. Utiliza Bonjour (protocolo de red zero-conf de apple) para identificar pares en una LAN. A continuación, puede chatear o audio/video chat con ellos.

No estoy del todo seguro de cómo funciona Bonjour en el interior, pero sé que utiliza la multidifusión. Los clientes "registran" servicios en la LAN, y el protocolo Bonjour permite que cada host obtenga un directorio de hosts para un servicio determinado (todo sin administración central).

Cuestiones relacionadas