NSInputStream示例?

时间:2011-07-24 01:22:07

标签: iphone objective-c

我正在尝试创建一个可以与服务器通信的简单iPhone应用程序(目前在我的计算机上运行并正常工作)。我一直在尝试使用NSStream类,但是遇到了很多问题。我真的只想模仿使用流的telnet类型的连接。我已经设法使用NSOutputStream将数据发送到我的服务器,但我无法弄清楚如何使用NSInputStream来读取从服务器发送的回复。这是我到目前为止的方法:

    -(void)sendName:(NSString *)name{
NSData*nameData = [name dataUsingEncoding:NSUTF8StringEncoding];
[outputStream write:(uint8_t *)[nameData bytes] maxLength:[nameData length]];

    //The server sends a reply here.
    [inputStream read:? maxLength:?]; // I don't know what do to here.


[inputStream close]; //Created and opened elsewhere.
[outputStream close]; //Created and opened elsewhere.
    }

我无法弄清楚如何让inputStream读取服务器发送的内容。我已经尝试将NSData对象作为缓冲区传递但它总是崩溃。那么我该如何创建缓冲区呢?另外,为了确保缓冲区不会填满(虽然可能是浪费空间),使长度变大是不是很糟糕?一些示例代码将是出色的!提前谢谢!

1 个答案:

答案 0 :(得分:2)

你需要了解的关于NSStreams的事情是“不要打电话给我们,我们会打电话给你。”当流有可用的数据时,它将通知其代理,然后您读取可用的任何数据并告诉它再获取更多数据。

阅读Streams Programming Guide