2011-07-24 27 views
46

我看到App Store上有幾個應用程序允許其他計算機與iPhone/iPad設備建立http連接來傳輸文件。它好像是一個Web服務正在iOS設備上運行。只是好奇它是如何完成的/使用了什麼類?作爲網絡服務器的iOS設備

謝謝。

+0

Bonjour僅用於網絡發現。在這種情況下,所提到的應用程序提供IP,以便其他人可以通過HTTP瀏覽器連接。 @ hotpaw2的答案是現場。 – user523234

+0

您使用了什麼解決方案,您的體驗如何? – Crashalot

回答

45

只顯示設備IP地址,打開一個套接字用於在iOS設備上運行的應用程序中偵聽,並實現http協議。有幾個第三方庫,可以做最繁重的工作適合你:

CocoaHTTPServer或iPhoneHTTPServer3,或SimpleWebSocketServer,或MultithreadedHTTPServer3

+0

想知道如果我只能託管靜態.html文件或在「服務器端」PHP或無論什麼動態運行的東西。 – RollRoll

+0

當然,但您必須在Swift(或Obj C)中查找或編寫動態服務器,並且服務器必須與iOS應用程序在相同的進程(具有相同的後臺權限)內運行。 – hotpaw2

18

像回答之前最好的選擇是使用第三方庫這一點。主要有兩個庫可以完成工作:CocoaHTTPServerMongooseDaemon

它們都有一個Objective-C API,但MongooseDaemon只是一個用plain c編寫的Mongoose HTTP服務器的包裝,而CocoaHTTPServer完全是用Objective-C編寫的。

我們決定一起去CocoaHTTPServer的,因爲幾個簡單的原因:

  1. 即使像設置文檔目錄的HTTP服務器MongooseDaemon不存在簡單的財產。您必須更改包含的源文件中的#define,才能將其從默認值更改爲NSHomeDirectory()
  2. 截至目前,MongooseDaemon庫包含有關Objective-C包裝器中使用的棄用方法的警告。
  3. CocoaHTTPServer知道諸如Bonjour或WebDav的事情,而Mongoose只是提供基礎知識。
  4. CocoaHTTPServer附帶很多範例,包括簡單的HTTP服務器,passwd,SSL/TLS或WebDav HTTP服務器。
  5. CocoaHTTPServer與GCD一起使用以啓用多線程。
17

您可以使用GCDWebServer

它是一種基於大中央調度適用於iOS和MacOS現代Web服務器。

+1

CocoaHTTPServer在一年內沒有更新,並且有很多停滯請求和問題。 GCDWebServer是全新的,帶有TravisCI和Swift。 +1。 – funroll

+0

......它也被社區和大開發者普遍接受,比如LG ConnectSDK – loretoparisi