2011-02-01 32 views
0

我想創建一個iPhone和PC之間的TCP連接。iOS如何將選擇器註冊爲流事件回調?

所以我創建了兩個CFStreamRef-s,我想註冊我的對象選擇器,以便在新字節可供讀取時調用。

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

當我從鏈接瞭解以上我可以這樣

CFReadStreamSetClient(myReadStream, registeredEvents, myCallBack, &myContext) 

我可以註冊我的對象這樣的選擇讀取流注冊功能?

+0

您可以通過在`myContext`結構的委託指針,並從內部`myCallback`調用它的方法/選擇。所以你應該使用`myCallback`作爲你的方法的基礎。 – yfrancis 2012-10-31 03:04:09

回答

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]; 
} 

一切都是實現NSStreamDelegate