
iPhone网络编程的第一个经验,聊天程序示例开发是本文要介绍的内容,解释了如何实现聊天程序的情况,事不宜迟,我们首先来看一下内容. 首先使用Xcode查看一个名为View的基于视图的应用程序项目.
使用网络通信流
使用套接字在网络上通信的最简单方法是使用NSStream类. NSStream类是代表流的抽象类. 您可以使用它来读取和写入数据. 它可以在内存,文件或网络中使用. 使用NSStream类,可以将数据写入服务器并从服务器读取数据.

在Mac OS X上,您可以使用NSHost和NSStream对象建立与服务器的连接,例如:
- NSInputStream *iStream;
- NSOutputStream *oStream;
- uint portNo = 500;
- NSURL *website = [NSURL URLWithString:urlStr];
- NSHost *host = [NSHost hostWithName:[website host]];
- [NSStream getStreamsToHost:host
- port:portNo
- inputStream:&iStream
- outputStream:&oStream];
NSStream类具有方法getStreamsToHost: port: inputStream: outputStream :,该方法创建到服务器的输入和输出流,但问题是iPhone OS不支持getStreamsToHost: port: inputStream: outputStream: 方法,因此上述代码位于“无法在iPhone应用程序中运行”中.

要解决此问题,可以向现有的NSStream类添加一个类别,并替换getStreamsToHost提供的功能: port: inputStream: outputStream: 方法. 右键单击Xcode Classes,然后添加文件NSStreamAdditions.m. 在NSStreamAdditions.h文件中,添加以下代码:
- #import
- @interface NSStream (MyAdditions)
- + (void)getStreamsToHostNamed:(NSString *)hostName
- port:(NSInteger)port
- inputStream:(NSInputStream **)inputStreamPtr
- outputStream:(NSOutputStream **)outputStreamPtr;
- @end
将以下代码添加到NSStreamAdditions文件中:

- #import "NSStreamAdditions.h"
- @implementation NSStream (MyAdditions)
- + (void)getStreamsToHostNamed:(NSString *)hostName
- port:(NSInteger)port
- inputStream:(NSInputStream **)inputStreamPtr
- outputStream:(NSOutputStream **)outputStreamPtr
- {
- CFReadStreamRef readStream;
- CFWriteStreamRef writeStream;
- assert(hostName != nil);
- assert( (port > 0) && (port < 65536) );
- assert( (inputStreamPtr != NULL) || (outputStreamPtr != NULL) );
- readStream = NULL;
- writeStream = NULL;
- CFStreamCreatePairWithSocketToHost(
- NULL,
- (CFStringRef) hostName,
- port,
- ((inputStreamPtr != nil) ? &readStream : NULL),
- ((outputStreamPtr != nil) ? &writeStream : NULL)
- );
- if (inputStreamPtr != NULL) {
- *inputStreamPtr = [NSMakeCollectable(readStream) autorelease];
- }
- if (outputStreamPtr != NULL) {
- *outputStreamPtr = [NSMakeCollectable(writeStream) autorelease];
- }
- }
- @end
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-218514-1.html