2013-05-01 40 views
8

Tôi đang tạo ứng dụng chia sẻ màn hình hoạt động theo cách tương tự như Chia sẻ màn hình của Google Hangout và tôi muốn biết cách plugin Google Talk (được sử dụng cho Chia sẻ màn hình) sinh ra quá trình và sử dụng con một dải cổng động.Luồng ứng dụng Google hangout dành cho máy tính để bàn

tôi đang tạo ra một nền chạy ứng dụng mà người dùng sẽ phải cài đặt, và đó nói với trình duyệt như thế nào họ mô tả ở đây, http://www.codeproject.com/Articles/36517/Communicating-from-the-Browser-to-a-Desktop-Applic

Nhưng khi tôi nhìn vào googleTalkPlugin, có trách nhiệm để chia sẻ màn hình google hangout, Tôi thấy rằng có rất nhiều quy trình đang chạy và bất cứ khi nào tôi mở một trình duyệt mới, một plugin trò chuyện mới cho trình duyệt đó bắt đầu, dưới dạng dịch vụ con.

Dưới đây là một số ảnh chụp nhanh

when I started safari

when I started firefox

và khi tôi nhận thấy các cổng được sử dụng bởi googleTalkPlugin, tôi đến để biết năng động của nó! Nếu bạn thấy liên kết ở trên, giao tiếp của Trình duyệt trên Màn hình là trên cổng tĩnh.

Tôi rất muốn biết, làm cách nào để sử dụng số cổng động? Ngoài ra, tôi có nên tạo quy trình con cho mọi trình duyệt không? Hoặc một cái gì đó tốt hơn?

+0

Không chắc chắn ý của bạn là gì. Tại sao một tiến trình con cho mọi trình duyệt? –

+0

vì đó là những gì google talk plugin làm. Như bạn có thể thấy hình ảnh, một quy trình con mới cho mọi trình duyệt được nâng lên khi trình duyệt đó đang chạy. –

+4

Tôi nghĩ rằng đó là vì Chrome có một quy trình cho mỗi tab. –

Trả lời

2

Lý do có quy trình con riêng biệt cho từng trình duyệt là ứng dụng Google Talk được triển khai dưới dạng plugin trình duyệt. Mỗi trình duyệt đều cài đặt plugin Google Talk và không biết về các trình duyệt khác, plugin của chúng hoặc các quy trình con của chúng. Mỗi trình duyệt sẽ khởi chạy các plugin mà nó đã cài đặt và, như Eduard đã đề cập trong các ý kiến, some plugins are started in a separate process. Đây không phải là hành vi đặc biệt về Google Talk, đó là hành vi bạn sẽ thấy với hầu hết các plugin. Nếu bạn triển khai đơn đăng ký của mình là a browser plugin, bạn sẽ có hành vi tương tự. Nếu bạn không muốn ứng dụng của mình chạy như một tiến trình con của trình duyệt thì bạn sẽ cần phải viết nó như một ứng dụng độc lập, không phải là một plugin trình duyệt.

Nếu bạn muốn tìm hiểu thêm về các quy trình con sinh sản read up on fork(). Có rất nhiều tài nguyên tốt khác trên internet trên subprocesses.

Câu hỏi khác của bạn là về số cổng động. Cách dễ nhất để làm điều này là liên kết với cổng 0 và bạn sẽ được gán một cổng mở ngẫu nhiên bởi hệ điều hành. Sau đó, bạn có thể sử dụng getsockname() để tìm hiểu bạn đã kết thúc cổng nào. Nếu bạn đang làm việc với một tình huống máy khách/máy chủ, bạn có thể yêu cầu máy khách thực hiện điều này và sau đó chỉ cho máy chủ biết cổng đang sử dụng.

+0

Logic cổng 0 có vẻ đẹp. Tôi sẽ thử. –

Các vấn đề liên quan