NSOutputStream与NSInputStream

一 ,转:https://blog.csdn.net/wangfnso/article/details/49909515

使用流来进行数据交互有一个规范的流程:1,设置源(对于NSInputStream来说是输入源,对于NSOutputStream来说是输出源),并初始化相应的流对象(NSInputStream,NSOutputStream)2,设置对应流的委托,3.将流添加到相应的RunLoop中,4.将流打开。5.实现流的事件处理程序Stream:handleEvent。6.当流结束时将其关闭,从RunLoop中移除,并将其设置为nil.

如为网络中的流进行数据交互:需要使用CFInputStream,CFOutputStream来创建对应的流,并将其转换成Cocoa中对应的NSInputStream,NSOutputStream,之后步骤与上面的本地流处理流程相同(1:设置委托,2:将其添加到RunLoop中,打开流,进行事件处理).这样使用流来进行数据传输,只需要指定数据的格式即可,


二, 转:https://blog.csdn.net/robinson_911/article/details/52554685

源码下载地址:http://download.csdn.net/detail/robinson_911/9631415

利用socket来模拟发送http请求有以下几步:

1.先建立连接 ,设置连接的站点和端口号

[selfrequestURLData:@"www.tf56.com"portNo:@"80"];

此处建立连接的时候,我们给网络的入口和出口分别建立了一个RunLoop,在此循环监听数据流事件的到来。

   [_inputStreamsetDelegate:self];

    [_inputStreamscheduleInRunLoop:[NSRunLoopcurrentRunLoop]forMode:NSDefaultRunLoopMode];

    [_outputStreamsetDelegate:self];

    [_outputStreamscheduleInRunLoop:[NSRunLoopcurrentRunLoop]forMode:NSDefaultRunLoopMode];

2. 拼接符合http协议的的请求字符串

根据http协议来拼接字符串NSString *_httpRequestStr =@"GET / HTTP/1.1\r\nHost:www.tf56.com\r\nConnection: close\r\n\r\n";

3. 对于回包数据的处理(本demo我只是将获取的数据给打印了下来)

在接收和发送数据的时候,用苹果封装好的NSStreamDelegate来处理数据。

#pragma mark -- NSStreamDelegate

- (void)stream:(NSStream *)eventStream handleEvent:(NSStreamEvent)streamEvent

你可能感兴趣的:(NSOutputStream与NSInputStream)