web-dev-qa-db-ja.com

WebサーバーとしてのiOSデバイス

App Storeには、他のコンピューターがiPhone/iPadデバイスにHTTP接続してファイルを転送できるようにするアプリがいくつかあります。 iOSデバイスでWebサービスが実行されているようです。どのようにそれが行われているのか、どのクラスが使用されたのですか?

ありがとう。

51
user523234

デバイスのIPアドレスを表示し、iOSデバイスで実行されているアプリでリッスンするためのソケットを開き、httpプロトコルを実装するだけです。ほとんどの面倒な作業を行えるサードパーティのライブラリがいくつかあります。

CocoaHTTPServer またはiPhoneHTTPServer3、SimpleWebSocketServer、またはMultithreadedHTTPServer3

48
hotpaw2

GCDWebServer を使用できます

これは、グランドセントラルディスパッチに基づいたiOSおよびMacOS用の最新のWebサーバーです。

21
loretoparisi

最良の選択がこのためにサードパーティのライブラリを使用することである前に答えたように。ジョブを完了するための主に2つのライブラリがあります: CocoaHTTPServer および MongooseDaemon

どちらにもObjective-C APIがありますが、MongooseDaemonはプレーン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と連携してマルチスレッドを有効にします。
19
Patrik

MongooseDaemonも良い選択です。

https://github.com/face/MongooseDaemon

9
Vanguarder