【发布时间】:2017-11-29 22:47:36
【问题描述】:
我正在我的一个项目中使用库 GCDWebServer(https://github.com/swisspol/GCDWebServer),出于安全原因,这要求我接受仅来自我的应用程序进程的连接。我希望这是 iOS 应用程序沙箱开箱即用的东西,但事实并非如此。沙盒似乎是通过文件系统权限对 UNIX 域套接字 (AF_UNIX) 实施的。但是对于 GCDWebServer 使用的 TCP/IP 套接字(AF_INET),似乎没有沙盒。
我能够编写两个示例应用程序 - 一个客户端和一个服务器(使用不同的开发人员证书签名),并且可以让它们相互通信,没有任何问题。
我想知道是否有某种方法可以在 iOS 上执行相同的操作,本质上是在 TCP 套接字上启动 HTTP 服务器,但只接受来自同一进程的连接。我不能使用 UNIX 域套接字,因为要从 HTTP 服务器请求内容的客户端是 AVPlayer,它不知道如何连接到我的应用程序的 UNIX 域套接字。
【问题讨论】:
-
也许你可以详细说明你为什么要这样做,也许有一个更合适的替代方案可以推荐......
-
我也是这么想的。这个想法是在磁盘上预先缓存 HLS(HTTP Live Streaming)视频的片段,如果缓存则让本地代理服务器为它们提供服务,否则重定向到远程 URL。因此,我们将提供给 AVPlayer 的是一个类似于 localhost:8080/MyVideo/playlist.m3u8 的 URL。这是我们正在尝试进行的优化,以减少视频加载时间。希望能解释用例。
标签: ios iphone sockets tcpsocket gcdwebserver