如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
HYPERLINK"http://www.cnblogs.com/iOS-Blog/archive/2013/04/15/3021764.html"iOS网络编程实践--NSStream实现TCPSocketiPhone客户端客户端我们使用iPhone应用程序,画面比较简单。点击发送按钮,给服务器发送一些字符串过去。点击接收按钮就会从服务器读取一些字符串,并且显示在画面上。有关客户端应用的UI部分不再介绍了,我们直接看代码部分,Socket客户端可以采用CFStream或NSStream实现,CFStream实现方式与服务器端基本一样。为了给读者介绍更多的知识,本例我们采用NSStream实现。NSStream实现采用Objective-C语言,一些面向对象的类。下面我们看看客户端视图控制器ViewController.h#import<CoreFoundation/CoreFoundation.h>#include<sys/socket.h>#include<netinet/in.h>#definePORT9000@interfaceViewController:UIViewController<NSStreamDelegate>{intflag;//操作标志0为发送1为接收}@property(nonatomic,retain)NSInputStream*inputStream;@property(nonatomic,retain)NSOutputStream*outputStream;@property(weak,nonatomic)IBOutletUILabel*message;-(IBAction)sendData:(id)sender;-(IBAction)receiveData:(id)sender;@end定义属性inputStream和outputStream,它们输入流NSInputStream和输出流NSOutputStream类。它们与服务器CFStream实现中的输入流CFReadStreamRef和输出流CFWriteStreamRef对应的。视图控制器ViewController.m的初始化网络方法initNetworkCommunication代码:-(void)initNetworkCommunication{CFReadStreamRefreadStream;CFWriteStreamRefwriteStream;CFStreamCreatePairWithSocketToHost(NULL,(CFStringRef)@”192.168.1.103″,PORT,&readStream,&writeStream);①_inputStream=(__bridge_transferNSInputStream*)readStream;②_outputStream=(__bridge_transferNSOutputStream*)writeStream;③[_inputStreamsetDelegate:self];④[_outputStreamsetDelegate:self];⑤[_inputStreamscheduleInRunLoop:[NSRunLoopcurrentRunLoop]forMode:NSDefaultRunLoopMode];⑥[_outputStreamscheduleInRunLoop:[NSRunLoopcurrentRunLoop]forMode:NSDefaultRunLoopMode];⑦[_inputStreamopen];⑧[_outputStreamopen];⑨}点击发送和接收按钮触发的方法如下:/*点击发送按钮*/-(IBAction)sendData:(id)sender{flag=0;[selfinitNetworkCommunication];}/*点击接收按钮*/-(IBAction)receiveData:(id)sender{flag=1;[selfinitNetworkCommunication];}它们都调用initNetworkCommunication方法,并设置操作标识flag,如果flag为0发送数据,flag为1接收数据。流的状态的变化触发很多事件,并回调NSStreamDelegate协议中定义的方法stream:handleEvent:,其代码如下:-(void)stream:(NS