2013-01-18 42 views
-1

如何在iPhone和主機之間實現雙向IP/TCP連接。在iOS應用和服務器之間交換實時數據

+0

你想在物理上推動計算機上的某個鍵嗎? – 2013-01-18 20:18:27

+0

我相信你正在尋找的是使用所謂的套接字,所以你通常有一個端口與服務器通信並設置套接字。我認爲一些在套接字上搜索可以幫助你。因爲我不知道你在用哪種語言編寫PC服務器,所以我無法建議,但是我發現本教程對於啓動和運行很有幫助http://www.linuxhowtos.org/C_C++/socket.htm希望你從中得到一些幫助,也許有更多知識的人可以填寫細節。 – qrikko

+0

但我可以像客戶端到主機一樣通過套接字發送數據。我不確定,如何將數據從主機發送回客戶端?換句話說,我希望服務器充當客戶端,而設備充當步驟#2的主機 - 服務器代碼可以是任何東西,C++/C#等等。 – IronMan1980

回答

0

TCP/IP通信是雙向通信。

確實:服務器必須是監聽連接的服務器,並且客戶端必須重新建立連接以防丟失。

但是在連接期間,客戶端可以向服務器發送消息(需要時),反之亦然。

爲了使連接保持活動狀態(它可以在一段時間內處於非活動狀態後終止),您可以定期發送一些虛擬(Keepalive)字符串:通常是從客戶端到服務器,但可以反過來。

既然你知道媒體鏈接如何建立的iOS客戶端和服務器之間的連接(也可以基於PC或其他),你知道如何從客戶端發送字符串服務器 - 你只需要實現服務器到客戶端通信。

具體怎麼做取決於你在iOS和PC服務器中使用哪種類型的套接字。

從切薩雷羅基一個很好的教程可以在這裏找到:How To Create A Socket Based iPhone App and Server

也有一個非常有用的,有據可查的插座包裝可可從羅比·漢森在GitHub上稱爲CocoaAsyncSocket

編輯:

你的情況,你通常會在一面上至少一個基於socket的客戶端。客戶有責任嘗試重新建立連接以防丟失(或首次建立連接)。

另一方面,您有一個聽衆套接字 - 一個套接字,用於偵聽新連接。對於每個新的連接(來自客戶端),它會產生一個新的套接字,然後您可以處理雙向通信。所以客戶端 - >服務器僅在建立連接期間纔是必要的。

+0

正確 - 當談到IP/TCP時,我不是專家。但是,幾乎所有我在這個主題上看到的東西,都希望在相同的請求中從服務器獲得答案。我還沒有看到一個實際上使服務器充當客戶端和設備作爲主機的例子。我知道應該有辦法,聊天程序可能就是一個例子。 – IronMan1980

+0

這就是通常情況下,服務器的真正含義。在某些情況下,它是這樣的:客戶端連接併發送請求 - 服務器響應 - 客戶端接受響應和斷開連接。但是,只要你願意,你可以保持連接活着。服務器可以主動發送一些數據(事件) - 不需要輪詢。輪詢仍然建議只檢查連接是否仍然存在。如果不是,你只需重新連接。 –

+0

太好了。我想我只需要找出我可以如何發送「事件」從服務器回到客戶端。事實上,這就是我需要我的計劃的事件。 – IronMan1980

相關問題