2011-07-24 15 views
46

Widziałem, że w App Store jest kilka aplikacji, które umożliwiają innym komputerom połączenie HTTP z urządzeniami iPhone/iPad w celu przesyłania plików. Wyglądało na to, że usługa internetowa działa na urządzeniu z iOS. Ciekawe, jak to się robi/jaka klasa była używana?Urządzenia iOS jako serwer WWW

Dzięki.

+0

Bonjour używany wyłącznie do wykrywania sieci. W tym przypadku wspomniane aplikacje podają adres IP, aby inni mogli się łączyć z przeglądarką HTTP. Odpowiedź @ hotpaw2 jest na miejscu. – user523234

+0

Z jakiego rozwiązania korzystałeś i jakie było twoje doświadczenie? – Crashalot

Odpowiedz

45

Wystarczy wyświetlić adres IP urządzenia, otworzyć gniazdo do słuchania w aplikacji działającej na urządzeniu z systemem iOS i zaimplementować protokół http. Istnieje kilka bibliotek 3rd party, które można zrobić większość podnoszenia ciężkich dla Ciebie:

CocoaHTTPServer lub iPhoneHTTPServer3 lub SimpleWebSocketServer lub MultithreadedHTTPServer3

+0

zastanawiasz się, czy mogę hostować tylko statyczne pliki .html lub uruchomić coś dynamicznego po stronie "php serwera" lub cokolwiek innego. – RollRoll

+0

Oczywiście, ale musisz znaleźć lub napisać swój serwer dynamiczny w Swift (lub Obj C), a serwer musiałby działać w tym samym procesie (z tymi samymi uprawnieniami w tle), co aplikacja na iOS. – hotpaw2

18

Jak odpowiedział przed najlepszym wyborem jest użycie 3rd biblioteki strona w tej sprawie. Istnieją dwie biblioteki do wykonania pracy: CocoaHTTPServer i MongooseDaemon.

Oba mają interfejs API Objective-C, ale MongooseDaemon to po prostu wrapper wokół serwera HTTP Mongoose napisany prostym c, natomiast CocoaHTTPServer jest napisany całkowicie w Objective-C.

Zdecydowaliśmy się iść z CocoaHTTPServer powodu kilku prostych powodów:

  1. Nawet najprostsze nieruchomość jak ustawienie katalogu dokumentów dla serwera HTTP nie istnieje w MongooseDaemon. Musisz zmienić #define w dołączonym pliku źródłowym, aby móc go zmienić z domyślnego, co wskazuje na NSHomeDirectory().
  2. Od tej pory biblioteka MongooseDaemon zawiera ostrzeżenia o nieaktualnych metodach używanych w opakowaniu Objective-C.
  3. CocoaHTTPServer jest świadomy rzeczy takich jak Bonjour lub WebDav, podczas gdy Mongoose dostarcza tylko podstawowe informacje.
  4. CocoaHTTPServer zawiera wiele przykładów, począwszy od prostych serwerów HTTP, passwd, SSL/TLS lub serwera HTTP WebDav.
  5. CocoaHTTPServer współpracuje z GCD, aby włączyć wielowątkowość.
17

Można użyć GCDWebServer

To nowoczesny serwer WWW dla iOS i MacOS oparciu o Grand Central Dispatch.

+1

CocoaHTTPServer nie został zaktualizowany w ciągu roku i ma wiele stagnacji wniosków i problemów pull. GCDWebServer jest zupełnie nowy, z TravisCI i Swift. +1. – funroll

+0

... i jest również powszechnie akceptowane przez społeczność i dużych programistów, takich jak LG ConnectSDK – loretoparisi