谷歌Hangout桌面应用流程

8
我正在创建一个屏幕共享应用程序,它的工作方式与Google Hangout屏幕共享类似,我想知道Google Talk插件(用于屏幕共享)如何生成子进程并使用动态端口范围。
我正在创建一个后台运行的应用程序,用户将必须安装它,并且它会像他们在这里描述的那样与浏览器通信:http://www.codeproject.com/Articles/36517/Communicating-from-the-Browser-to-a-Desktop-Applic 但是当我查看负责Google Hangout屏幕共享的googleTalkPlugin时,我发现有很多进程在运行,每当我打开一个新浏览器时,都会启动该浏览器的新对话插件,作为子服务。
以下是一些快照 when I started safari when I started firefox 当我注意到googleTalkPlugin使用的端口时,我发现它是动态的!如果您看了上面的链接,则浏览器桌面通信在静态端口上。
我非常想知道,我如何使用动态端口号?还是应该为每个浏览器创建子进程?还是有更好的方法?

不确定您的意思。为什么每个浏览器都需要一个子进程? - Prof. Falken
因为这就是 Google Talk 插件的功能。正如您所看到的,当浏览器运行时,会为每个浏览器引发一个新的子进程。 - Hitesh Joshi
4
我认为这是因为Chrome为每个标签页都有一个进程。 - Prof. Falken
以上图片中是否包含Firefox和Safari进程?如果用户没有Chrome怎么办?那么Google Hangout在该系统上就不能使用了吗?但事实并非如此。 - Hitesh Joshi
1
Firefox会在单独的进程中启动一些插件:http://support.mozilla.org/en-US/kb/What%20is%20plugin-container Chrome为每个标签页启动一个新进程。这些就是你看到的进程。Hangout插件没有任何特殊功能。还需要了解更多吗? - Eduard Wirch
Eduard!感谢你提供的链接。但是,如果你能看到上面的图片,你会发现蓝色区域中每个浏览器都有一个子进程(而不是每个标签页),并且该进程与Google Talk相关联。例如,当我启动Firefox时,会启动一个名为“Firefox插件进程(Google Talk插件)”的新进程。 - Hitesh Joshi
1个回答

2
每个浏览器都有一个独立的子进程是因为 Google Talk 应用程序是作为浏览器插件实现的。每个浏览器都安装了 Google Talk 插件,不知道其他浏览器、它们的插件或它们的子进程。每个浏览器将启动其已安装的插件,并且正如 Eduard 在评论中提到的那样,一些插件会在单独的进程中启动。这并不是 Google Talk 特有的行为,大多数插件都会出现这种行为。如果你将你的应用程序实现为 浏览器插件,你将会遇到同样的行为。如果你不想让你的应用程序作为浏览器的子进程运行,那么你需要编写一个独立的应用程序,而不是一个浏览器插件。
如果你想了解更多关于生成子进程的内容请阅读fork()。在互联网上还有很多其他好的资源可以了解子进程
你的另一个问题是关于动态端口号。最简单的方法是绑定到端口0,操作系统会分配一个随机开放的端口给你。然后你可以使用getsockname()来找出你使用的端口号。如果你正在处理客户端/服务器情况,你可以让客户端这样做,然后告诉服务器它正在使用哪个端口。

这个端口0的逻辑听起来不错。我会试一下。 - Hitesh Joshi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接