2011-03-18 166 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++腳本生成動態內容的快速服務器)的工作,但是我可能會因爲我屬於項目。