问题标签 [nsinputstream]

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 回答
455 浏览

ios - 使用 NSInputStream 进行 NSMutableData 加密

我正在尝试使用 CommonCrypto 加密 NSMutableData 对象(将结果字节复制到自身,而不复制它)。以前,我使用 CCCrypt() “一次性”方法,主要是因为它看起来很简单。我注意到我的数据对象在内存中重复了。为了避免这种情况,我尝试使用缓冲区大小为 2048 字节的 NSInputStream 对象。我正在阅读我的 NSMutableData 对象,并不断调用 CCCryptorUpdate() 来处理加密。问题是,它似乎仍然是重复的。这是我当前的代码(请注意,它是NSMutableData 上的一个类别——主要是因为历史原因——因此是“自我”引用):

我在这里肯定遗漏了一些明显的东西,加密,甚至使用输入流对我来说有点新。

0 投票
1 回答
177 浏览

cocoa-touch - 在特定位置启动 NSInputStream

我有一个输入流,我想在某个位置开始读取字节。有什么办法可以做到吗?假设我想读取1024locationn的字节,即文件n中的字节。nth我如何实现这一目标?我查看了文档,似乎没有办法做到这一点。

0 投票
1 回答
1033 浏览

swift - 读取 NSInputStream 会产生 -1 bytes available 错误

我正在尝试使用NSInputStreamand进行一些简单的编码NSOutputStream

-1从 read 方法收到一个,这意味着它没有可用的字节,为什么会发生这种情况?

我也尝试过NSInputStream直接使用fileAtPath初始化程序初始化并得到相同的错误。

0 投票
1 回答
11577 浏览

swift - 仅 SWIFT——从 NSInputStream 读取

你能解释一下如何从 NSInputStream 中正确读取吗?

我不明白什么是 UnsafePointer 以及它的用途(也适用于 UnsafeArray)。

NSInputStream 读取函数获取一个 CMutablePointer,它可以用 UnsafePointer 对象填充。

与 Java 的 Streams 相比,这真是一团糟。

你会推荐什么 ?

谢谢!

0 投票
1 回答
183 浏览

objective-c - 来自 URL 的 NSInputStream 似乎没有得到任何东西

我有以下代码,我知道它正在运行:

我的 ReadDelegate 类被声明为类似@interface ReadDelegate : NSObject <NSStreamDelegate>并包含一个- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode. 该特定函数中只有一个 print 语句,以查看它是否被调用过。它不是。

我知道连接正在打开,因为我的服务器正在接收“request\0\0\0”消息并且服务器正在发送文件(我在其他环境中进行了测试,可以很好地接收文件)。

但是,如前所述,ReadDelegate在开头 (del) 中声明的对象永远不会收到stream消息,即使是一次(说流是打开的或其他什么)。

为什么没有调用代表?

0 投票
1 回答
1296 浏览

objective-c - Objective-C 下载流畅的流媒体视频

我想知道 Objective-C 是否有办法下载设置为以平滑流格式流式传输的 mp4 视频。到目前为止,我已经尝试过 AFNetworking、NSInputStream 和 MPMoviePlayerController 来尝试访问原始视频数据,但每次尝试都为空。

然后,我想获取此视频数据并将其作为 mp4 保存到磁盘以供离线播放。URL 看起来像这样:

0 投票
1 回答
1281 浏览

objective-c - 将 NSString 加载到 NSInputStream

在java中我有这样的东西:

fin它基本上使用文本文件的内容进行初始化。

我正在尝试将此java代码转换为objectiveC,我真的很迷茫,因为第二行是如何做到的,即objectiveC中的等价物是什么Thread.currentThread().getContextClassLoader().getResourceAsStream(data)

注意:我不能直接将文件读入文件,InputStream因为数据是在字符串变量中全局提供的。

我是 ObjectiveC 的新手,如果这是微不足道的,我很抱歉,但任何帮助将不胜感激。

0 投票
1 回答
322 浏览

swift - “NSInputStream”没有名为“setDelegate”的成员

我在 A子类中使用NSStreamDelegate协议,UIViewController

然后将setDelegate消息发送到NSInputStream.

我收到一条'NSInputStream' does not have a member named 'setDelegate'错误消息

为什么我可以像下面的文档一样使用“setDelegate”?

https://developer.apple.com/library/prerelease/iOS/documentation/Cocoa/Reference/Foundation/Classes/NSStream_Class/index.html

0 投票
0 回答
569 浏览

ios - iOS 输入流仅在输出流同时发送时才接收快速数据

我的 iOS 应用程序需要套接字通信。我正在关注这个Ray Wenderlich 教程来设置输入和输出流。我使用的服务器是 Twisted。我的应用程序需要发送和接收由外部事件(如陀螺仪数据)生成的快速数据突发。它以 JSON 字符串的形式发送/接收数据。所以在很大程度上,它非常像一个实时消息聊天应用程序,但发送和接收速度非常快并且是突发的。

所以我的应用程序布局是我有 1 个视图控制器:DViewContorller和一个带有 3 个 tableviewcontrollers 的 tabbarcontroller。我需要在所有这 4 个视图控制器中发送和接收数据,因此我在 App Delegate 中实现了套接字流初始化。对于所有 3 个选项卡,我的 App Delegate 设置了,[self.inputstream setDelegate:self]但是当它位于其中时,DViewController它将输入流的委托设置为DViewController. 在(void)viewWillDisappearDViewController,我将输入流委托重置为 AppDelegate 的引用,以使其重新获得对输入流的控制。对于输出流,委托始终设置为 AppDelegate 并且从不更改。

myAppDelegateDViewControllerare<NSStreamDelegate>都实现:

实现了所有流事件案例。

所以基本上,我的整个设置运行良好,但前提是数据不快(或者就此而言,我似乎无法确定确切的问题)。

以下是我在测试时所做的一些观察(使用 Simulator-iPhone 和 iPhone-iPhone 设置):

A. 模拟器 - iPhone:

  1. 现在,在这个设置中,我能够以我希望它从模拟器发送到 iPhone 的方式快速发送数据,但不能从 iPhone 发送到模拟器。iPhone 可以很好地接收所有字符串并按要求操作。

  2. 从 iPhone 发送到模拟器,模拟器一次只能读取一个 JSON 字符串,当数据发送快时不起作用。如果发送快,那么模拟器接收到的所有字符串都是一半(只接收到一半)。注意:服务器接收和发送完整的字符串,所有字符串即使速度很快,服务器也没有问题。

  3. 如果我同时从模拟器和 iPhone 同时发送数据,即使速度很快,也能很好地接收和处理所有字符串。

B. 苹果手机 - 苹果手机:

  1. 任一 iPhone(其中任何一个发送,而不是同时发送)一次只能接收一个 JSON 字符串的数据,并且在快速发送数据时两者都不起作用。如果发送速度很快,那么任何一部 iPhone 接收到的所有字符串都是一半(只接收到一半)。注意:服务器接收和发送完整的字符串,所有字符串即使速度很快,服务器也没有问题。

  2. 如果我同时从两部 iPhone 相互发送数据,即使速度很快,也能很好地接收和处理所有字符串。

这些观察让我相信,只有当 iPhone 同时向服务器发送某些内容时,它才会接收所有快速字符串。或者我可能完全错了,因为当模拟器发送到 iPhone 时,iPhone 无论如何都能接收到所有内容。我想知道模拟器的不同之处在于从它接收的字符串被 iPhone 完整接收,而不是相反。是不是 iPhone 发送的速度比模拟器快,因此它发送的所有字符串都没有被接收方注册?请有人帮我破解这个!

注意:在所有情况下,服务器都能完美运行,无论速度如何,它都可以全长发送和接收数据。我正在使用 iOS 7。

更新1: 好的,所以整天都在试验它,我终于让它工作了。问题是,这正是我的问题陈述,如果你想连续快速地从输入流接收,输出流不能保持空闲。我不知道为什么会发生这种情况,如果有人可以启发我。所以我正在使用的快速修复是,每当我在输入流上获得字节时,我立即将空白数据发送到服务器以保持输出流处于活动状态。所以现在输入流可以快速读取完整的数据。但我觉得这是对服务器资源的浪费。另外,这不是一个可靠的解决方案。我正在寻找一个具体的解决方案。我想知道模拟器是如何做到的,而不用担心输出流的使用。有人可以帮忙吗?

更新 2: 从以前的更新中学习,这不是向服务器发送空白数据,但如果我想从他那里接收完整的下一个字符串,我需要向发送者发送虚拟数据。如果我想快速和完整地结束/接收数据,我需要使用虚拟/空白数据保持端到端通信。有人遇到过这个问题并找到了更好的可靠/具体的方法吗?

0 投票
0 回答
72 浏览

ios - iOS 模拟器输出流的发送方式与 iPhone 的输出流不同

我的 iOS 应用程序需要套接字通信。我正在关注这个Ray Wenderlich 教程来设置输入和输出流。我使用的服务器是 Twisted。我的应用程序需要发送和接收由外部事件(如陀螺仪数据)生成的快速数据突发。它以 JSON 字符串的形式发送/接收数据。所以在很大程度上,它非常像一个实时消息聊天应用程序,但发送和接收速度非常快并且是突发的。

现在我知道流不会发送消息,而是一个接一个地发送附加的所有内容。但是我在非常快地发送数据时观察到了这件事。模拟器的输出流,即使它非常快地向 iPhone 发送数据或不向 iPhone 发送数据,在任何情况下,都会以消息方式发送数据。服务器接收每个发送命令作为单个消息。与运行相同代码的 iPhone 不同,当它必须快速发送数据时,它会像流一样发送所有消息,一个接一个地附加。

此外,当模拟器快速发送消息时,接收 iPhone 会收到所有消息并完成消息。但是,当 iPhone 向模拟器或另一台 iPhone 发送快速消息时,它们都会收到不完整/损坏的消息,即使服务器上的代码在发送之前将流附加消息分开(我已经验证过)。

谁能解释我出了什么问题,在哪里?我希望我的应用程序不仅能从模拟器接收到来自另一部 iPhone 的快速且完整的消息。

是我发布的原始问题,以防有人对细节感兴趣。