2011-01-22 44 views
1

我已經安裝我有偵聽使用HTTP通過套接字API創建一個服務器套接字上端口80請求一個C程序流傳輸服務器「Lighttpd的」(光-TPD),其運行在端口81如何繞過插座?

我想,一旦我得到來自客戶端的80端口的請求我轉發到流媒體服務器,剩餘的談話發生的B/W的流媒體服務器和客戶端&完全繞過我的C程序。

問題是客戶端會期望從端口80(即從我的C程序的套接字)的套接字郵件,因爲它只發送請求到端口80,而不是從端口81上提供服務的流服務器。 任何人都可以幫我解決這個繞過80端口套接字來回復客戶端的問題。

解決方案我認爲:我的程序可以是一箇中間人......它會將請求轉發到流服務器的端口81,當它從那裏得到回覆時,它將它們轉發給客戶端...但繞過將是有效的我不知道該怎麼做。請幫助我。

預先感謝

回答

0

我最近實現了類似的技術,其中一個單一的節目接受TCP連接,然後「穿過」該連接到另一組件,並播放在插座會話沒有進一步的一部分。它使用將接受的套接字的文件描述符通過UNIX套接字傳遞給服務器組件的技術,該服務器組件有效地執行fd的進程間進程dup()

請參閱herehere

這對我的作品,我對服務器端的UNIX插槽兩端的控制,但爲你工作,你需要:您的調度組件之間

  1. Unix套接字服務器組件。
  2. 完全控制服務器組件。

您可能需要在lighttpd源代碼,謬以千里......

對不起,不是一個真正的合適的回答...

1

爲什麼把你的C程序在前面? Lighttpd被設計成用作前端代理(以及其他用途),因此您可以將lighttpd放在前面並使用它的mod_proxy_core將請求傳遞到您的C程序。在應用程序中執行一些處理後,您可以使用X-Rewrite和/或X-Sendfile將請求傳回給Lighttpd。