b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

iPhone网络编程首次体验聊天程序示例开发

电脑杂谈  发布时间:2020-05-22 05:18:13  来源:网络整理

程序编程原理_程序编程图片_网络编程聊天程序课程设计

iPhone网络编程的第一个经验,聊天程序示例开发是本文要介绍的内容,解释了如何实现聊天程序的情况,事不宜迟,我们首先来看一下内容. 首先使用Xcode查看一个名为View的基于视图的应用程序项目.

使用网络通信流

使用套接字在网络上通信的最简单方法是使用NSStream类. NSStream类是代表流的抽象类. 您可以使用它来读取和写入数据. 它可以在内存,文件或网络中使用. 使用NSStream类,可以将数据写入服务器并从服务器读取数据.

程序编程原理_程序编程图片_网络编程聊天程序课程设计

在Mac OS X上,您可以使用NSHost和NSStream对象建立与服务器的连接,例如:

  1. NSInputStream *iStream;  
  2.             NSOutputStream *oStream;  
  3.             uint portNo = 500;  
  4.             NSURL *website = [NSURL URLWithString:urlStr];  
  5.             NSHost *host = [NSHost hostWithName:[website host]];  
  6.             [NSStream getStreamsToHost:host  
  7.                                   port:portNo  
  8.                            inputStream:&iStream  
  9.                           outputStream:&oStream]; 

NSStream类具有方法getStreamsToHost: port: inputStream: outputStream :,该方法创建到服务器的输入和输出流,但问题是iPhone OS不支持getStreamsToHost: port: inputStream: outputStream: 方法,因此上述代码位于“无法在iPhone应用程序中运行”中.

程序编程图片_网络编程聊天程序课程设计_程序编程原理

要解决此问题,可以向现有的NSStream类添加一个类别,并替换getStreamsToHost提供的功能: port: inputStream: outputStream: 方法. 右键单击Xco​​de Classes,然后添加文件NSStreamAdditions.m. 在NSStreamAdditions.h文件中,添加以下代码:

  1. #import  
  2. @interface NSStream (MyAdditions)  
  3. + (void)getStreamsToHostNamed:(NSString *)hostName  
  4.                          port:(NSInteger)port  
  5.                   inputStream:(NSInputStream **)inputStreamPtr  
  6.                  outputStream:(NSOutputStream **)outputStreamPtr;  
  7. @end 

将以下代码添加到NSStreamAdditions文件中:

程序编程图片_网络编程聊天程序课程设计_程序编程原理

  1. #import "NSStreamAdditions.h"  
  2. @implementation NSStream (MyAdditions)  
  3. + (void)getStreamsToHostNamed:(NSString *)hostName  
  4.                           port:(NSInteger)port  
  5.                    inputStream:(NSInputStream **)inputStreamPtr  
  6.                   outputStream:(NSOutputStream **)outputStreamPtr  
  7.  {  
  8.      CFReadStreamRef     readStream;  
  9.      CFWriteStreamRef    writeStream;  
  10.      assert(hostName != nil);  
  11.      assert( (port > 0) && (port < 65536) );  
  12.      assert( (inputStreamPtr != NULL) || (outputStreamPtr != NULL) );  
  13.      readStream = NULL;  
  14.      writeStream = NULL;  
  15.      CFStreamCreatePairWithSocketToHost(  
  16.                                         NULL,  
  17.                                         (CFStringRef) hostName,  
  18.                                         port,  
  19.                                         ((inputStreamPtr  != nil) ? &readStream : NULL),  
  20.                                         ((outputStreamPtr != nil) ? &writeStream : NULL)  
  21.                                         );  
  22.          if (inputStreamPtr != NULL) {  
  23.         *inputStreamPtr  = [NSMakeCollectable(readStream) autorelease];  
  24.      }  
  25.      if (outputStreamPtr != NULL) {  
  26.          *outputStreamPtr = [NSMakeCollectable(writeStream) autorelease];  
  27.      }  
  28.  }  
  29.  @end 


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-218514-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...