2011-03-18 168 views
1

我正在为防火墙后的摄像机创建即插即用软件。要做到这一点,相机有一个命令,告诉它连接到我的服务器(通过http),我可以在http中与它通话。重定向HTTP请求

我需要将这个连接导出给用户,这样当我得到http请求时,我将它们直接转发给摄像机,并将响应转发回给用户。

我最初的想法只是使用TCP - 使用tcp获取相机连接,并不断等待用户连接。当我获得用户连接时 - 我将所有内容都转发给相机,并从相机转发给它。换句话说 - 普通的旧端口重定向。

当用户需要有几个活动连接到相机时,问题就开始了。我希望这不会是一个问题 - 但我已经发现(或者至少这是我的想法)浏览器实际上打开了几个连接到同一个站点下载文件。

现在我别无选择,只能编写实际读取http请求的代码,将其分发到相机,等待相机的响应并将其发回。 这是允许多个连接到同一个摄像头只用一个连接(据我所知)的唯一方法。

我的问题是 - 是否有任何现有的代码来做到这一点?图书馆?软件?或者有没有更好的方法来做我想做的事情?

编辑:好吧,显然我错了关于创建多个连接到服务器的浏览器。实际发生的事情是服务器返回HTTP 1.0响应,正如我发现的那样,HTTP 1.0允许每个连接一个请求(和响应)。我所看到的只是浏览器刚刚离开之前打开的已使用连接,并为新请求打开一个新连接。然而,我仍然必须自己做HTTP消息转发(我只实现了“text/html”,“text/plain”和其他一些用于相机的自定义内容类型)。举例来说,浏览器根本不显示图片。因此,如果有人知道任何代码可以完成http消息转发(或者是一个应用程序),我很乐意听到它。

作为一个方面说明 - 我已经检查了httpd(apache)的代理功能。它不仅非常复杂,而且似乎只允许一台机器上的代理连接。所以我放弃了这个方向,自己实现了基本转发。

感谢

+2

您正在寻找的功能通常由HTTP代理服务器提供。有很多开源项目..也许你会发现一个可以轻松定制的项目? – svens 2011-03-18 22:16:40

+0

你能提供更多信息吗?哪一方正在启动连接;您的目标是从外部连接到相机,还是让相机连接到其他设备? – 2011-03-18 23:06:32

+0

我将服务器地址硬连接到相机,然后在连接到用户LAN(通过http)时连接到我。然后,我需要接受来自外部的用户连接,并让他们访问摄像机(使用我拥有的连接)。 – TomM 2011-03-18 23:13:12

回答

0

在相机内嵌Web服务器不能够扩展,所以你应该相当查询摄像机,把图像在高速缓存中,然后按最新的图像到每个客户端(最好使用presistent HTTP 1.1的连接) 。

如何做到这一点取决于您的延迟需求(刷新之间的延迟)以及有多少客户端加入游戏。

如果听起来像G-WAN(一个使用C,C++,D,Java和Objective-C/C++脚本生成动态内容的快速服务器)的工作,但是我可能会因为我属于项目。