iOS devices as web server

IphoneObjective CIosCocoa TouchIpad

Iphone Problem Overview


I saw there are several apps on App Store that allow other computers to make a http connection to the iPhone/iPad devices to transfer files. It seemed like a web service is running on the iOS device. Just curious how is it done /what class was used?

Thanks.

Iphone Solutions


Solution 1 - Iphone

Just display the devices IP address, open a socket for listening in an app running on the iOS device, and implement the http protocol. There are several 3rd party libraries that can do most of the heavy lifting for you:

CocoaHTTPServer or iPhoneHTTPServer3, or SimpleWebSocketServer, or MultithreadedHTTPServer3

Solution 2 - Iphone

You can use GCDWebServer

It's a modern web server for iOS and MacOS based on grand central dispatch.

Solution 3 - Iphone

Like answered before the best choice is to use a 3rd party library for this. There exist mainly two libraries to get the job done: CocoaHTTPServer and MongooseDaemon.

Both of them have an Objective-C API but MongooseDaemon is just a wrapper around the Mongoose HTTP server written in plain c, whereas CocoaHTTPServer is completely written in Objective-C.

We decided to go with CocoaHTTPServer because of a few simple reasons:

  1. Even the simplest property like setting the document directory for the HTTP server does not exist in MongooseDaemon. You have to change a #define in an included source file to be able to change it from the default one, which points to NSHomeDirectory().
  2. As of now the MongooseDaemon library contains warnings about deprecated methods used within the Objective-C wrapper.
  3. CocoaHTTPServer is aware of things like Bonjour or WebDav whereas Mongoose just delivers the basics.
  4. CocoaHTTPServer comes with many examples that range from simple HTTP servers, passwd, SSL/TLS or WebDav HTTP server.
  5. CocoaHTTPServer works with GCD to enable multithreading.

Solution 4 - Iphone

MongooseDaemon is also a good choice.

https://github.com/face/MongooseDaemon

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser523234View Question on Stackoverflow
Solution 1 - Iphonehotpaw2View Answer on Stackoverflow
Solution 2 - IphoneloretoparisiView Answer on Stackoverflow
Solution 3 - IphonePatrikView Answer on Stackoverflow
Solution 4 - IphoneVanguarderView Answer on Stackoverflow