我正在创建一个屏幕共享应用程序,它的工作方式类似于Google Hangout屏幕共享,我想知道Google Talk插件(用于屏幕共享)如何生成子进程并使用动态端口范围。
我正在创建一个后台运行的应用程序,用户将不得不安装,并与浏览器交谈,就像他们在这里描述的那样,http://www.codeproject.com/Articles/36517/Communicating-from-the-Browser-to-a-Desktop-Applic
但当我查看负责谷歌hangout屏幕共享的googleTalkPlugin时,我看到有许多进程正在运行,每当我打开一个新浏览器时,该浏览器的一个新talk插件就会启动,作为子服务。
以下是一些快照


当我注意到googleTalkPlugin使用的端口时,我开始了解它的动态!如果您看到上面的链接,则说明Browser Desktop通信在静态端口上。
我很想知道如何使用动态端口号?另外,我应该为每个浏览器创建子进程吗?还是更好的?
发布于 2013-08-03 03:25:32
每个浏览器都有一个单独的子进程的原因是Google Talk应用程序是作为浏览器插件实现的。每个浏览器都安装了Google Talk插件,并且不知道其他浏览器、它们的插件或子进程。每个浏览器都会启动它已经安装的插件,并且,正如Eduard在评论中提到的,some plugins are started in a separate process。这并不是Google Talk的特殊行为,而是你会在大多数插件中看到的行为。如果您将应用程序实现为a browser plugin,您将具有相同的行为。如果你不想让你的应用程序作为浏览器的子进程运行,那么你需要把它写成一个独立的应用程序,而不是浏览器插件。
如果您想了解有关生成子进程的更多信息,请使用read up on fork()。在subprocesses上,互联网上还有很多其他不错的资源。
您的另一个问题与动态端口号有关。最简单的方法是绑定到端口0,操作系统将为您分配一个随机开放的端口。然后,您可以使用getsockname()找出您最终使用的端口。如果您正在处理客户端/服务器的情况,您可以让客户端执行此操作,然后只需告诉服务器它正在使用哪个端口。
https://stackoverflow.com/questions/16318225
复制相似问题