2011-02-01 5 views
0

iPhone과 PC간에 TCP 연결을 만들고 싶습니다.iOS 선택기를 스트림 이벤트 콜백으로 등록하는 방법은 무엇입니까?

그래서 CFStreamRef-s를 두 개 만들고 새 바이트를 읽을 수있을 때 호출 할 객체 선택기를 등록하려고합니다. 나는 이런 내 객체의 선택을 등록 할 수이

CFReadStreamSetClient(myReadStream, registeredEvents, myCallBack, &myContext) 

같은 읽기 스트림에 대한 기능을 등록 할 수 있습니다 위의

http://developer.apple.com/library/mac/#documentation/Networking/Conceptual/CFNetwork/CFStreamTasks/CFStreamTasks.html#//apple_ref/doc/uid/TP30000230-62008

나는 링크에서 알 수있는 바와 같이? 이 링크

http://xmppframework.googlecode.com를 참조 아이폰과 PC 사이의 TCP 연결을 설정하는

+0

구현입니다. 그래서 당신은 효과적으로 myCallback을 당신의 메소드를위한 심 (shim)으로 사용하게 될 것입니다. – yfrancis

답변

0

CFReadStreamRef는 NSInputStream입니다. 당신이 더 많은 일을해야

-(void) tryToConnect 
{ 
    CFReadStreamRef myReadStream = NULL; 
    CFWriteStreamRef myWriteStream = NULL; 

    // Create socket. 
    CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, 
            (CFStringRef) ip_, 
            port_, 
            &myReadStream, 
            &myWriteStream); 
    //TODO: check if everything is ok 

    readStream_ = (NSInputStream*) myReadStream; 
    writeStream_ = (NSOutputStream*) myWriteStream; 

    [readStream_ setDelegate:self]; //register to get events 
    [readStream_ scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 

    [readStream_ open]; 
    [writeStream_ open]; 
    [self sendSomething]; 
} 

모든 당신은`myContext` 구조에 위임 포인터를 전달하고, myCallback``내에서의 방법/선택기를 호출 할 수 있습니다 NSStreamDelegate

0

.

실제로 Mac 용으로 개발 된 iPhone 버전도 있으므로 한 번 철저히 시험해보십시오.

관련 문제