Web server on port 80 on iPhone

You can bind to port 80 on the device's IPv4 interface but not the IPv6 interface and not in the simulator. You'll need to modify your socket code to only listen on the IPv4 interface, for the simulator you can conditionally use a different port:

#if TARGET_IPHONE_SIMULATOR
    [httpServer setPort:8080];
#else
    [httpServer setPort:80];
#endif

iPhone is unix based. Ports below 1024 are reserved for the root/superuser. You need to be root in order to use those ports.