间歇性地收到 NSStreamEventErrorOccurred

发布于 2024-10-14 11:29:56 字数 590 浏览 0 评论 0原文

我正在开发一个 iPhone 应用程序,用于扫描特定端口上的 IP 范围。 192.168.1.2 至 192.168.1.10(含)。

我正在使用 CoreFoundation 网络方法来创建输入和输出流并将流事件发送回我的委托。

当循环尝试连接到每个 IP 地址的范围时,我设置了一个超时,如果在设置的时间内没有收到响应,我就知道该 IP 上没有设备。

如果我收到 NSStreamEventNone,我也知道没有设置设备。

大多数时候,这一切都有效。我设置了0.3秒的超时。因此扫描整个范围需要 2.4 秒。

然而,有时,对于每个 IP 地址,我会收到一个 NSStreamEventErrorOccurred 响应,显然是随机的。

苹果的文档说:

如果流对象调度在运行循环上,则该对象会在stream:handleEvent:消息中向其委托报告 NSStreamEventErrorOccurred 事件。

但我不相信我会将它放入除主线程上正在进行的运行循环之外的任何运行循环中。

还有什么可能导致 NSStreamEventErrorOccurred ?

I'm developing an iPhone application that scans an IP range on a specific port. 192.168.1.2 to 192.168.1.10 inclusive.

I'm using the CoreFoundation networking methods which create the input and output streams and sends stream events back to my delegate.

When looping through the range trying to connect to each ip address, I set a timeout, and if I haven't received a response by the time set, I know there's not a device at that IP.

I also know there's no device set if I receive NSStreamEventNone.

Most of the time, this all works. I set a timeout of 0.3 seconds. So it takes 2.4 seconds to scan through the range.

However on occasion, apparently randomly, for each IP address I will receive an NSStreamEventErrorOccurred response.

Apple's documentation says:

If the stream object is scheduled on a run loop, the object reports a NSStreamEventErrorOccurred event to its delegate in a stream:handleEvent: message.

But I don't believe I'm putting it onto any run loop other than the ongoing one on the main thread.

What else could cause NSStreamEventErrorOccurred?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文