重定向HTTP请求

时间:2011-03-18 22:11:49

标签: c++ linux http

我正在为防火墙后面的摄像头创建即插即用软件。为此,摄像机有一个命令,告诉它连接到我的服务器(通过http),我可以在http中与它通信。

我需要将此连接导出到用户,这样当我收到http请求时,我会将它们直接转发给相机,并将响应转发给用户。

我最初的想法是使用tcp - 使用tcp获取摄像头连接,并持续等待用户连接。当我获得用户连接时 - 我将所有内容从它转发到相机,从相机转发到它。换句话说 - 普通旧端口重定向。

当用户需要与摄像机建立多个活动连接时,问题就开始了。我希望这不会是一个问题 - 但我发现(或者至少就是我认为发生的事情)浏览器实际上打开了几个连接到同一站点以下载文件。

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

我的问题是 - 是否有任何现有代码可以执行此操作?图书馆?软件?或者有更好的方法来做我想做的事情吗?

编辑:好吧,显然我错误地认为浏览器创建了几个与服务器的连接。实际发生的是服务器返回HTTP 1.0响应,正如我所知,HTTP 1.0允许每个连接一个请求(和响应)。我看到的是浏览器刚刚打开之前打开的已使用连接,并为新请求打开一个新连接。

但是,我仍然需要自己进行HTTP消息转发(我只实现了“text / html”,“text / plain”以及相机使用的其他一些自定义内容类型)。例如,浏览器根本不显示图片。因此,如果有人知道任何执行http消息转发的代码(或执行它的应用程序),我很乐意听到它。

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

由于

1 个答案:

答案 0 :(得分:0)

摄像机中嵌入的Web服务器无法扩展,因此您应该更好地查询摄像机,将图像放入缓存中,然后将最新图像推送到每个客户端(最好使用先前的HTTP 1.1连接)。

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

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