问题标签 [cfnetwork]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1573 浏览

iphone - Apples Reachability 类是否有更复杂的替代方案?

Apple 已经创建了著名的 Reachability 类,但查看代码我不太信任它。格式和标题很乱。

它也没有帮助显示“你没有互联网!” 警报。

我只想做:

  • 在某个时候下载一个 XML。

  • 当没有互联网时,显示警报。

  • 当下载 XML 时 Internet 断开连接时,显示警报。

在我的应用程序中,用户没有点击下载按钮,这一切都在后台自动发生。

就是这样。真的。我现在在可达性上花了 3 个小时,我的大脑只是拒绝它。

有人用干净的标题和干净的代码创造了一个聪明的替代方案吗?使用起来非常简单的东西?

0 投票
1 回答
5114 浏览

iphone - 如何正确使用 Apples Reachability 类来判断互联网是否有效?

可能重复:
Apples Reachability 类是否有更复杂的替代方案?

这是一个例子:

问题:我听说在某些情况下 WiFi“可能需要连接 VPN on Demand ”。那么我应该如何正确地通知用户有关非功能性互联网连接的信息?我认为上面的代码不足以解决这个问题。

0 投票
2 回答
183 浏览

iphone - 什么时候*必须*一个应用程序包含 Reachability 类来测试网络可达性?

根据Cocoa with Love的说法,当应用程序需要 WiFi(而不是蜂窝网络)时,需要可达性,例如,如果应用程序加载大量视频并且不打算通过 3G 使用。

我的应用程序使用互联网,无论是 WiFi 还是 3G,并且只从网络服务下载小数据。

有人可以澄清应用程序必须在哪些情况下进行此可达性测试吗?

0 投票
2 回答
1784 浏览

iphone - 监控连接状态和处理丢包

我已经实施了一个可行的解决方案,请在下面查看我的评论

您好,感谢您抽出宝贵时间阅读这篇文章!

我正在开发一个应用程序,该应用程序连接到广播自己的 AdHoc WiFi 网络的硬件设备。我能够通过 CFNetwork 与 NSStream 的免费桥接连接到设备、发送字节和接收字节。我正在使用相当“事实上”的流打开代码,并且流委托正在报告 NSStreamEvents。

初始化与设备的连接后,我可以看到输入和输出流都打开(NSStreamEventOpenCompleted),并且由于硬件设备不断发送“HELLO!”,因此输入流上立即有 BytesAvailable(NSStreamEventHasBytesAvailable)。

在 NSStreamEventHasBytesAvailable 的案例事件中,我从 inputStream 读取数据并将其记录为:

正如预期的那样,当我的设备连接时,我有一个恒定的“LOG -- 设备说:xxxx”流。但是,如果我断开设备与电源的连接,我不会收到任何类型的流事件;日志记录只是一起停止。

我试图通过在我的 viewDidLoad 中启动一个 backgroundTimer 来解决这个问题,它每 0.1 秒尝试从 inputStream 中读取。如果无法读取,则布尔值deviceIsConnected设置为FALSE,我会显示一条警报,通知用户他们与设备的连接已断开。

这种方法已被证明是相当不可靠的,也是一种非常不优雅的方式来执行一项看似简单的检测套接字连接关闭的任务。如果我理解正确, NSStream 类本质上是底层 BSD 套接字架构之上的“中间人”或抽象层。

将硬件设备与其电源断开是模拟走出设备板载 WiFi 芯片的范围。这不是“真实世界”的测试,就像您在物理上离开设备一样,您不会突然失去连接;相反,inputStream 接收到的数据会慢慢恶化,从而导致“网络警报”弹出窗口在设备在“已连接”和“未连接”之间跳转时不断闪烁。

我想实现某种 KeepAlive 处理程序,但我缺乏 iPhone / iOS / BSD 套接字的经验严重阻碍了我。如果你们中的任何一个出色的人可以提供一个方法的基本示例(可能在计时器上运行,我认为我在正确的道路上!)可以检测到套接字变得不可用并继续尝试重新建立连接,我将永远感激不尽。我不知疲倦地搜索了谷歌,发现了一些有希望的想法,但都未能成功实施。

CocoaASyncSocket 能否成为我所有问题/挫折的答案?

再次感谢您花时间阅读这篇文章。我希望我已经清楚地解释了我的问题和我想要的解决方案。如果您有任何问题,请随时提出,我会尽力回答。

0 投票
1 回答
1203 浏览

ios - 如何检测与 CFStream/NSStream 的连接断开?

这是设置:

我有一个使用创建的输入流CFReadStreamCreateForStreamedHTTPRequest。它具有kCFStreamPropertyHTTPAttemptPersistentConnection属性集(我正在汇集连接)。我连接的服务器正在返回分块编码的数据。

在我们的正常情况下一切正常。我的问题是,如果有任何问题,我正在与之交谈的服务器会断开我的连接。对于我的生活,我无法弄清楚如何检测断开的连接。

在我的流的事件回调中,我只看到kCFStreamEventEndEncountered但没有报告任何错误,即使在 Wireshark 中我可以清楚地看到连接在发送流结束分块编码标记之前很久就获得了 FIN。

当服务器断开连接时,我似乎应该收到一个kCFURLErrorNetworkConnectionLost错误事件,但我只是遇到了。

任何建议都非常感谢。

0 投票
1 回答
1518 浏览

iphone - CFNetwork.framework 在 xcode4 中被误删

我已经包含CFNetwork.framework在我的应用程序中。后来在不需要的时候,我只是右键单击并错误地删除了。现在我的 iPhone 应用程序没有构建,说 CFNetwork.h 丢失了。在添加库中,我搜索但在列表中找不到框架。

(1) 有什么办法可以恢复已删除的CFNetwork.framework.

(2) 有没有办法下载这个framework并将其添加到Xcodeor中SDK

0 投票
0 回答
364 浏览

ios - 记录 iOS 中的所有套接字调用

我正在尝试跟踪我的应用程序中的问题,并且需要跟踪 BSD 套接字 API 的所有调用。我基本上希望在创建套接字时调用我的函数,这将打印包含当时关键变量值的日志记录语句(包括套接字的目标和端口等)

我希望在我的程序直接调用套接字时调用此日志记录(这很容易),但困难的部分是我希望在由于其他高级 API 调用(CFNetwork 等)而间接调用套接字调用时调用它.)

如何才能做到这一点?

0 投票
0 回答
717 浏览

objective-c - 如何将代理详细信息设置为 NSURLDownload 对象

我正在创建一个下载器,我想通过特定的代理服务器运行它。我能够将代理信息传递给 CFURLRef 对象。但不能与 NSURLDownload 一起使用,这将完全忽略所做的代理设置。

现在,如果我将 CFURLRef 转换为 NSURL 对象并将其传递给下载器,它不会按预期工作。如何将设置为 CFURLRef 对象的属性传递给 NSURLRequest?..还有其他方法可以实现吗?..我也尝试使用 ASIHTTPRequest 包装器..但是如何将其转换为 NSURLRequest?..任何帮助将不胜感激.

谢谢

0 投票
1 回答
761 浏览

ios - CFStream 上的 HTTP 请求

我正在尝试使用 CFStream 进行简单的 HTTP 通信,但是使用下面的代码,即使我提供了无效的 URL (wwwww.yahoo.com),我仍然可以成功连接。

有人可以指出我这段代码有什么问题吗?我预计对 CFReadStreamOpen() 的调用会失败,但即使 URL 错误,它也会成功。

我还没有找到一个简单的 CFNetwork 示例,它可以在 ARC 上运行 HTTP(不使用 NSURL)。如果有人知道这样的示例代码,请告诉我。

0 投票
4 回答
3242 浏览

iphone - 如何在 iOS 中将 CFReadStreamRead 设置为超时?

我有在 iOS 上使用 CFReadStreamRead 的旧代码,但如果没有/丢失连接,CFReadStreamRead 将永远阻塞。如何将 CFReadStreamRead 设置为超时?

提前致谢