2008-12-20 19 views
6

Sadece eğlenmek için basit Serverless LAN Chat programı geliştirmek istiyorum. Bunu nasıl yapabilirim ? Ne tür bir mimari kullanmalıyım?Serversız Lan Sohbet Programı Geliştirme Yardım!

Geçen yıl TCP, UDP Client/Server uygulama Project.It üzerinde çalıştım. (Sunucu belirli port/soket dinler ve İstemci sunucu portuna bağlanır vb.) Ama nasıl geliştirileceğimi bilmiyorum. Serverless "LAN Chat programı. Bunu nasıl yapabilirim? UDP, TCP Multicast, Broadcast? Ya da program hem sunucu hem de istemci gibi davranmalı mı?

+0

Burada çalışan bir çözüm bulmak isteyen herhangi biri olursa, bunu, pidgin (multiplatform) bonjour/zeroconf ile kontrol edin. http://www.blog.highub.com/linux/use-bonjour-to-chat-on-ubuntu/ –

cevap

10

En basit yol UDP kullanmak ve iletilerinizi tüm ağ üzerinden yayınlamaktır. Biraz daha gelişmiş sürüm, yalnızca ağdaki diğer düğümleri bulmak için yayını kullanmak olacaktır.

  • Her düğüm bilinen eşlerin listesini tutar.
  • Mesajlar tüm bilinen kullanıcılara TCP ile gönderilir.
  • Bir düğüm başlatıldığında, diğer düğümleri keşfetmek için bir UDP yayını gönderir.
  • Bir düğüm, bir keşif yayını aldığında, kendi kendini tanımak için, yayın kaynağına "kendisini" gönderir. Alıcı düğüm, yayıncıyı kendi bilinen eşler listesine ekler.
  • Bir düğüm ağdan çıktığında, kalan düğümleri bırakılan istemciyi listesinden kaldırmaları gerektiğini bildirmek için başka bir yayın gönderir.

Ayrıca, ağın geri kalan kısmını bilgilendirmeden düğümleri düşürmeyi de dikkate almanız gerekir.

1

spread toolkit, ne istediğiniz için biraz aşırı olabilir, ancak ilginç bir başlangıç ​​noktası olabilir. cümle itibaren

:


Yayılması yerel ve geniş alan ağları üzerinden hatalarına karşı dayanıklı olan yüksek performanslı mesajlaşma hizmeti sağlayan bir açık kaynak aracıdır. Yayılmış olarak dağıtılmış uygulamalar için birleşik bir mesaj yolu olarak yayılır ve yüksek düzeyde ayarlanmış uygulama düzeyinde çok noktaya yayın, grup iletişimi ve noktadan noktaya destek sağlar. Yayılma hizmetleri, güvenilir mesajlardan, teslimat garantilerine sahip tam olarak sıralanmış mesajlara kadar çeşitlilik gösterir.

Spread, üyelerin çeşitli alt kümeleri arasında yüksek güvenilirlik, yüksek performans ve sağlam iletişim gerektiren birçok dağıtılmış uygulamada kullanılabilir. Araç seti, asenkron ağların zorlu yönlerini kapsüllemek ve güvenilir ve ölçeklenebilir dağıtılmış uygulamaların oluşturulmasını sağlamak için tasarlanmıştır.

Spread, kullanıcı uygulamalarının bağlantılı olduğu bir kütüphaneden, işlemci grubunun bir parçası olan her bir bilgisayarda çalışan bir ikili artalandan ve çeşitli yardımcı program ve tanıtım programlarından oluşur.

Yayılması tarafından sağlanan hizmetlerin ve faydalarından bazıları:

  • Güvenilir ve ölçeklenebilir mesajlaşma ve grup iletişimi.
  • Çok güçlü ancak basit bir API, dağıtılmış mimarilerin oluşturulmasını kolaylaştırır.
  • Kullanımı, dağıtımı ve bakımı kolaydır.
  • Bir yerel alan ağından karmaşık geniş alan ağlarına kadar çok ölçeklenebilir.
  • Farklı grup üyeleriyle binlerce grubu destekler.
  • Makine hatalarının, işlem çökmelerinin ve geri kazanımların ve ağ bölümlerinin ve birleştirmelerin varlığında ileti güvenilirliğini etkinleştirir.
  • İletiler için bir dizi güvenilirlik, sıralama ve kararlılık garantisi sağlar.
  • Sağlamlık ve yüksek performansa önem verin.
  • Merkezi hata noktası olmayan, tamamen dağıtılmış algoritmalar.
+0

Spread, NAT ile sorunu çözmek için herhangi bir şey yapar mı? –

0

Elmalar iChat, öngördüğünüz ürünün bir örneğidir. LAN üzerindeki eşleri tanımlamak için Bonjour'u (Apple'ın sıfır-conf ağ protokolünü) kullanır. Daha sonra sohbet edebilir veya sesli/görüntülü sohbet edebilirsiniz.

Bonjour'un nasıl çalıştığını tam olarak bilmiyorum ama çok noktaya yayın kullandığını biliyorum. İstemciler LAN üzerindeki hizmetleri "kayıt" eder ve Bonjour protokolü, her bir ana bilgisayarın belirli bir hizmet için bir ana bilgisayar dizini oluşturmasına izin verir (tümü merkezi yönetim olmadan).