如何在Objective-c中将数据从NSOutputStream传递到NSInputStream

时间:2015-01-30 19:03:22

标签: ios objective-c nsstream

我想要整合2个库,让它们相互通信。他们每个人都听自己的输入和输出流。 库1将是库2的传输层。

案例1: 库1在其输入流上接收数据我想在另一个虚拟输出流上写入数据,该输出流将通过管道传输到库2上的输入流。

案例2: 库2想要发送一些数据,因此它会将数据写入其输出流。这应该通过管道传输到一个虚拟输入流,数据将被读取并写入库1的输出流。

如何在objective-c中为这些NSStream创建管道?

提前感谢您的意见。

2 个答案:

答案 0 :(得分:1)

以下是创建简单管道的方法:

CFReadStreamRef readStream = NULL;
CFWriteStreamRef writeStream = NULL;

CFStreamCreateBoundPair(NULL, &readStream, &writeStream, 4096);

NSInputStream *inputStream = (__bridge_transfer NSInputStream *)readStream;
NSOutputStream *outputStream = (__bridge_transfer NSOutputStream *)writeStream;

您写入outputStream的内容将可从inputStream中读取。

答案 1 :(得分:1)

Swrie版本的Gabriele Mondada的回答

    var readStream:Unmanaged<CFReadStream>?
    var writeStream:Unmanaged<CFWriteStream>?

    CFStreamCreateBoundPair(nil, &readStream, &writeStream, 4096)

    let inputStream:NSInputStream = readStream!.takeRetainedValue()
    let outputStream:NSOutputStream = writeStream!.takeRetainedValue()