2013-05-01 13 views
8

Google Hangout Ekran Paylaşımları gibi benzer bir şekilde çalışacak bir ekran paylaşımı uygulaması oluşturuyorum ve Google Talk eklentisinin (Ekran Paylaşımları için kullanılan) çocuk süreçlerini ve kullanımlarını nasıl geliştirdiğini öğrenmek istiyorum dinamik bir port aralığı.Google hangout masaüstü uygulama akışı

Ben kullanıcı yüklemek zorunda kalacak uygulamayı çalıştıran bir arkaplan oluşturma ve buraya nasıl tarif gibi tarayıcı ile konuşur ki am, http://www.codeproject.com/Articles/36517/Communicating-from-the-Browser-to-a-Desktop-Applic

Ama google uğrak ekran paylaşımı sorumludur googleTalkPlugin, baktığınızda, Bir çok işlemin çalıştığını gördüm ve yeni bir tarayıcı açtığımda, bu tarayıcı için yeni bir konuşma eklentisi, çocuk servisi olarak başlıyor.

İşte bazı anlık

when I started safari

when I started firefox

ve ben googleTalkPlugin tarafından kullanılan bağlantı noktasını fark, ben dinamik bilmek geldi vardır! Yukarıdaki bağlantıyı gördüyseniz, Tarayıcı Masaüstü iletişimi statik bağlantı noktasında.

Dinamik bağlantı noktası numaralarını nasıl kullanacağımı bilmek isterim. Ayrıca, her tarayıcı için çocuk süreci oluşturmalı mıyım? Ya da daha iyi bir şey?

+0

Ne demek istediğinizden emin değilsiniz. Neden her tarayıcı için bir çocuk süreci? –

+0

çünkü google talk eklentisinin yaptığı şey bu. Resimleri görebileceğiniz gibi, her tarayıcı için yeni bir çocuk işlemi, bu tarayıcı çalışırken ortaya çıkar. –

+4

Sanırım bunun nedeni, Chrome'un her sekme için bir süreci vardır. –

cevap

2

Her tarayıcı için ayrı bir alt işlemin nedeni, Google Talk uygulamasının bir tarayıcı eklentisi olarak uygulanmasıdır. Her tarayıcının bir Google Talk eklentisi yüklüdür ve diğer tarayıcılar, eklentileri veya alt işlemleri hakkında bilgi sahibi değildir. Her tarayıcı, yüklediği eklentileri ve Eduard'ın yorumlarda belirteceği gibi, some plugins are started in a separate process. Bu, Google Talk ile ilgili özel bir davranış değil, çoğu eklenti ile göreceğiniz davranış. Uygulamanızı a browser plugin olarak uygularsanız, aynı davranışa sahip olursunuz. Uygulamanızın bir tarayıcının bir alt işlemi olarak çalışmasını istemiyorsanız, bunu bir tarayıcı eklentisi olarak değil, bağımsız bir uygulama olarak yazmanız gerekir.

read up on fork() yumurtlama alt yordamları hakkında daha fazla bilgi edinmek isterseniz. İnternette subprocesses'da başka birçok iyi kaynak var.

Diğer sorunuz dinamik bağlantı noktası numaraları ile ilgilidir. Bunu yapmanın en kolay yolu, bağlantı noktası 0'a bağlanmak ve işletim sistemi tarafından rasgele bir açık bağlantı noktası atanır. Sonunda hangi bağlantı noktasını bulduğunuzu öğrenmek için getsockname() kullanabilirsiniz. Bir istemci/sunucu durumuyla çalışıyorsanız, istemcinin bunu yapmasını sağlayabilir ve ardından sunucuyu hangi bağlantı noktasını kullandığını söyleyebilirsiniz.

+0

Bu bağlantı noktası 0 mantık güzel geliyor. Denerim. –

İlgili konular