问题标签 [nsstream]

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 投票
2 回答
1827 浏览

iphone - iPhone - 通过互联网的点对点连接

我正在构建一个使用与 Web 服务器的异步套接字连接的应用程序。为了发送大量数据,我想使用异步套接字将两部 iPhone 连接到对等连接中。我对 GCDAsyncSocket 比对 iOS SDK 套接字 API 更熟悉。

我做过类似的事情,但只有在本地网络中,我才会使用 NSNetService 发布存在并从 p2p 连接获取所需的地址。

你能给我一个关于如何使用 p2p 套接字连接通过互联网连接两个 iPhone 的提示吗?

0 投票
3 回答
2698 浏览

objective-c - 当字节可用时,NSInputStream 读取返回无符号整数最大值

我尝试使用 NSStream 从/向 Socket 读取和写入数据。这是我的连接代码:

对于输入流,我实现了委托方法来接收事件

[NSStream read:maxLength:]总是返回最大的无符号整数值。最终我得到这个错误:

为什么读取方法返回这么大的值?它真的读了那么多字节吗?(我不这么认为):)

PS: Socket Stream 服务器没问题。它也向其他客户端读写数据,没有问题。

0 投票
3 回答
2875 浏览

objective-c - 您应该如何处理 NSStream 阻塞的可能性?

根据 Apple 的“轮询与运行循环调度”:

[ hasSpace/BytesAvailable] 可能意味着有可用的字节或空间,或者找出的唯一方法是尝试读取或写入操作(这可能导致暂时阻塞)。

该文档没有明确说明 hasSpace/BytesAvailable事件的行为方式相同,只是模糊地表明它们具有“相同的语义”。

我是否可以得出结论,写入/读取流错误或字节读取/写入返回小于预期量可能是由于“瞬时阻塞”?

如果是这样,我应该再次尝试传输吗?我应该使用某种计时器机制让堵塞有机会清除吗?这将是很多工作要实施,所以如果它不太可能有帮助,我宁愿不这样做。

(在这种情况下启动有限轮询循环是很诱人的,比如说一个进行 10 次尝试的 while 循环,但我不知道在运行循环中调度流的同时这样做是否安全,并且我没有办法测试它。)

0 投票
1 回答
2131 浏览

objective-c - 防止在轮询模式下使用 NSStream 停止应用程序

我已经实现了从 Windows 桌面应用程序到 iPhone 应用程序的客户端-服务器传输。我在轮询模式(同步)下使用 NSStream 传输数据。

一切正常,但是当我尝试连接不存在的服务器或断开连接的服务器或端口号/IP 地址错误时,NSOutputStream 对象的 WRITE 方法会停止应用程序执行。

是否可以通过插入超时控制来管理该方法?如果是,我该怎么办?

我认为 NSInputStream 对象的 READ 方法也会出现同样的问题。

有人可以帮我吗?

0 投票
0 回答
265 浏览

ios - 如何通过 UIWebView 直接从 NSInputStream 读取数据?

UIWebView 提供显示来自 NSData 的内容的能力。是否可以使用 NSStream 而不是 NSData 作为内容源?

0 投票
1 回答
2858 浏览

iphone - NSStream,获取读取字节的百分比

我正在将文件上传到服务器,使用 NSStream API 读取块。我正在尝试显示一个显示上传进度的进度条。我无法找到一个可靠的解决方案来确定读入文件的字节数。更改文件和块大小,我仍然不断获得总字节数,或者读取字节数为 93 或 212 之类的奇怪内容。有没有人有任何尝试做到这一点的提示?看起来应该很简单。

0 投票
0 回答
439 浏览

iphone - 如何将数据从我的 iPhone 应用程序流式传输到符合 MFi 的附件?

我有一个兼容 MFi 的设备,我需要从 iPhone 向其传输实时数据。我查看了 ExternalAccessory 框架和 EADSessionController 类。我可以通过将字节写入输出流来与我的 MFi 设备进行通信。

我面临的问题是,当我尝试将字节从我的 iPhone 应用程序连续流式传输到 MFi 设备时,字节被组合成可变大小的块并同时发送。相反,我需要立即将每个数据包发送到外部设备。

有没有办法推动流立即发送数据,而不是在这些块中聚合它?

0 投票
1 回答
706 浏览

iphone - 锁定手机后 NSStream 结束

我的在线应用在 iPhone-3GS iOS 4.3 上运行,使用 NSStream 与服务器通信。

当我最小化应用程序、锁定手机并重新启动我的应用程序时,流将结束。

所以我的应用程序失去了与服务器的连接。

谁知道手机锁屏后如何保持连接?它是iOS多任务的功能吗?

0 投票
1 回答
954 浏览

ios - 警告:尝试创建 USE_BLOCK_IN_FRAME

我在 Xcode 中收到此警告

警告:尝试使用不在框架中的块创建 USE_BLOCK_IN_FRAME 变量。

Xcode 将我重定向到我的 NSStream

出现此错误时是随机的,并且我的应用程序在触发时崩溃。有人试过类似的问题吗?

谢谢

编辑

在 appDelegate.h

在 appDelegate.m 中:

我意识到我忘了[_naturStream close]我不知道它是否解决了问题?

编辑

另一件事,....我使用线程来获取 JSON 数据:

0 投票
0 回答
1090 浏览

ios - iOS StreamStatus 总是返回 NSStreamStatusOpen

刚刚有一个关于 NSStream 的 streamStatus 的问题。在我的应用程序中,我有一个输入流和一个输出流,可以很好地发送和接收数据。然而,早些时候,我注意到如果服务器出现故障,我不会在客户端收到任何连接中断的通知。经过几周的尝试研究和实施各种测试后,我发现它们都没有为我提供对不正确的服务器断开连接或崩溃的正确响应。然后,我创建了一个每 5 秒触发一次的计时器,并调用了一个检查 streamStatus 的函数。通过禁用 LAN 连接断开服务器后,我注意到客户端仍然注册为已连接。当我开始调试客户端时,我注意到 streamStatus 总是返回NSStreamStatusOpen在我的输入和输出流上。

有什么我没有做的事情吗?我在下面附上了我如何调用和接收 streamStatus 的小片段。

初始化定时器(连接成功后调用):

检查流: