2011-07-29 134 views
1

我有兩臺服務器(家庭和遠程)和iPhone上的程序。 iPhone需要保持一個端口開放,直到整個過程完成,否則整個系統將失敗。保持端口打開 - iPhone

因此,在iPhone上從「家」的服務器(通過後)的一串數據,增加了一些東西出來,並通過端口流連接到「遠程」服務器。一旦端口被打開並且數據被髮送到「遠程」,它就從遠程獲得一個響應,並將其轉發到「home」。一旦「家」得到它,它會改變一些東西,並將其發送回iPhone,需要通過相同的,仍然打開的端口將信息轉發到「遠程」。

我不能關閉端口流,並打開它備份,因爲「遠程」服務器上的事情會改變,打破了整個過程。

這裏是一個快速的畫面。謝謝你,MS Paint。 Server Connection

由於提前, 詹姆斯

回答

1

如果您可以控制本地和遠程服務器,可以確保HTTP 1.1的使用和連接使用的「保持活動」標頭。

的技術也可以幫助爲XMMP binding仿效長壽命的雙向連接的語義。

如果你沒有對服務器的控制,那麼我擔心你是你自己的了一下,因爲保持活動被理所當然地推出了支持持續性或長期連接。

在這種情況下,我認爲保持連接打開的唯一選項是某種輪詢方式,即當iPhone正在等待一臺服務器的響應時,它會每隔一段時間向其他服務器發送請求n秒,低於服務器連接超時。

這種做法只會工作,如果服務器不立即關閉發送響應之後的連接。

+0

不幸的是,我無法控制任何一臺服務器。 – Baub

+0

那麼,POST連接不是我所擔心的,它是NSInputStream和NSOutputStream。 – Baub