我正在开发一个iPhone应用程序,用于扫描特定端口上的IP范围。 192.168.1.2至192.168.1.10(含)。
我正在使用CoreFoundation网络方法创建输入和输出流,并将流事件发送回我的委托。
在尝试连接到每个IP地址的范围内循环时,我设置了超时,如果我没有按时间设置收到响应,我知道该IP上没有设备。
如果收到NSStreamEventNone,我也知道没有设备设置。
大多数时候,这一切都有效。我设置了0.3秒的超时。因此扫描范围需要2.4秒。
然而有时,显然是随机的,对于每个IP地址,我将收到一个NSStreamEventErrorOccurred响应。
Apple的文档说:
如果在运行循环上调度流对象,该对象会在流:handleEvent:message中向其委托报告NSStreamEventErrorOccurred事件。
但是我不相信我把它放在主线程上正在进行的任何一个运行循环上。
还有什么可能导致NSStreamEventErrorOccurred?