gpt4 book ai didi

c - Google 环聊桌面应用流程

转载 作者:太空狗 更新时间:2023-10-29 17:04:06 27 4
gpt4 key购买 nike

我正在创建一个屏幕共享应用程序,其工作方式与 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 使用的端口时,我开始了解它的动态!如果您看到上面的链接,则浏览器桌面通信是在静态端口上。

我很想知道如何使用动态端口号?另外,我应该为每个浏览器创建子进程吗?或者更好的东西?

最佳答案

每个浏览器都有一个单独的子进程的原因是 Google Talk 应用程序是作为浏览器插件实现的。每个浏览器都安装了一个 Google Talk 插件,并且不知道其他浏览器、它们的插件或它们的子进程。每个浏览器都会启动它已安装的插件,正如 Eduard 在评论中提到的那样,some plugins are started in a separate process .这不是 Google Talk 的特殊行为,这是您会在大多数插件中看到的行为。如果您将应用程序实现为 a browser plugin你会有同样的行为。如果您不希望您的应用程序作为浏览器的子进程运行,那么您需要将其编写为独立应用程序,而不是浏览器插件。

如果您想了解更多关于生成子进程的信息 read up on fork() .在 subprocesses 上还有很多其他不错的互联网资源。 .

您的另一个问题是关于动态端口号的。最简单的方法是绑定(bind)到端口 0,操作系统会为您分配一个随机打开的端口。然后您可以使用 getsockname()找出你最终使用的端口。如果您正在处理客户端/服务器情况,您可以让客户端执行此操作,然后只需告诉服务器它正在使用哪个端口。

关于c - Google 环聊桌面应用流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16318225/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com