gpt4 book ai didi

ios - GCDWebServer 通过热点网络

转载 作者:行者123 更新时间:2023-11-29 11:28:18 24 4
gpt4 key购买 nike

我正在开发一个应用程序,设备可以通过公共(public) Wi-Fi 网络相互连接和交互,并且为了文件交换的目的,我正在使用 GCDWebServer

当我使用普通的 wi-fi 网络或设备通过第 3 方主机连接到热点网络时,一切都运行良好。但是我遇到了一个奇怪的问题,其中一台启动了应用程序的设备实际上是一个热点的主机。

我有这个代码:

- (void)startStreamHLSServer
{
dispatch_async(dispatch_get_main_queue(), ^{
if (!_webServer.isRunning)
{
_webServer = [GCDWebServer new];
[_webServer addGETHandlerForBasePath:@"/" directoryPath:[_fileManager videosURL].path indexFilename:nil cacheAge:3600 allowRangeRequests:YES];

[_webServer startWithPort:1000 bonjourName:nil];

NSLog(@"URL: %@", _webServer.serverURL.absoluteString);
}
});
}

问题是 serverURL 是 nil。这实际上看起来合乎逻辑,因为我检查了一个函数 GCDWebServerGetPrimaryIPAddress,它应该告诉地址,这个函数只在 en0 接口(interface)中寻找地址,而 Hotspot 网络实际上是 bridge100.

所以问题是 - 是否有一种“正常”的方式让 GCDWebServer 与 bridge100 一起工作?

第二部分:

尽管 serverURL 为 nil,方法 startWithPort 返回 true。所以我想也许服务器正在运行,只是不能告诉我它的地址。所以我用我的自定义方法得到了设备的地址(如果你有兴趣,我可以把它附在这里,但我 100% 确定它给出了正确的地址)并尝试使用它来与网络服务器“对话”,但运气不好 - 服务器没有响应。所以也许 startWithPort 毕竟会返回一个错误的结果。

非常有趣的观察 - 当我在 GCDWebServerGetPrimaryIPAddress 方法中将 primaryInterface 更改为 bridge100 时,它解决了问题。 GCDWebServer 显示了正确的地址,它肯定正在运行,因为我可以访问设备文件夹。

如有任何帮助,我们将不胜感激!

最佳答案

So question is - Is there a "normal" way to make GCDWebServer work with bridge100?

没有。您需要 fork GCDWebServer 并修补此功能。

Although serverURL is nil, method startWithPort returns true.

如果此方法返回 true,则服务器肯定正在运行。端口已打开并正在监听(默认情况下绑定(bind)到所有接口(interface))。问题是您需要弄清楚要使用哪个 IP 从 iPhone 外部访问服务器。

关于ios - GCDWebServer 通过热点网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56464724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com