首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone流编程(CFStream) Hello World

iPhone流编程(CFStream) Hello World
EN

Stack Overflow用户
提问于 2010-04-09 01:11:55
回答 1查看 3.4K关注 0票数 3

我目前正在尝试从我的iPhone向运行正常服务器(通过iPhone上的telnet测试)的远程计算机发送Hello World。

下面是我的代码:

代码语言:javascript
复制
#import "client.h"

@implementation client

- (client*) client:init {
 self = [super init];
 [self connect];
 return self;
}

- (void)connect {
        CFWriteStreamRef writeStream;
        CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)[NSString stringWithFormat: @"192.168.1.1"], 50007, NULL, &writeStream);
  NSLog(@"Creating and opening NSOutputStream...");
  oStream = (NSOutputStream *)writeStream;
  [oStream setDelegate:self];
  [oStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
  [oStream open];
}

- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode {
    NSLog(@"stream:handleEvent: is invoked...");

    switch(eventCode) {
        case NSStreamEventHasSpaceAvailable:
        {
            if (stream == oStream) {
                NSString * str = [NSString stringWithFormat: @"Hello World"];
                const uint8_t * rawstring =
    (const uint8_t *)[str UTF8String];
                [oStream write:rawstring maxLength:strlen(rawstring)];
                [oStream close];
            }
            break;
        }
    }
}

@end

对于client.h:

代码语言:javascript
复制
#import <UIKit/UIKit.h>


@interface client : NSObject {
 NSOutputStream *oStream;
}

-(void)connect;

@end

最后,在AppDelegate.m中:

代码语言:javascript
复制
- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    // Override point for customization after app launch    
    [window addSubview:viewController.view];
 [window makeKeyAndVisible];
 [client new];
}

有人知道哪里出了问题吗?

EN

回答 1

Stack Overflow用户

发布于 2010-04-09 01:44:38

您的初始化格式不正确。您创建了一个名为client:的方法,而不是init,该方法接受一个名为init的未标记参数(缺省值为id或int--我想是id,但我现在记不起来了)。由于此方法(客户端)从不调用,因此您的客户端永远不会连接。相反,请将该方法替换为以下内容:

代码语言:javascript
复制
- (id)init
{
  if( (self = [super init]) ) {
   [self connect];
  }
  return self;
}

现在,当您调用[Client new]时,您的客户端实际上将被初始化并调用connect本身。我还稍微重组了它,使其遵循通用的Objective-C/Cocoa初始化模式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2601950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档