2011-02-01 11 views
0

iPhoneとPCの間にTCP接続を作成したいと考えています。iOSセレクタをストリームイベントコールバックとして登録する方法

私は2つの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を参照してくださいiPhoneとPC間のTCP接続を確立するため

+0

を実装しています。だからあなたのメソッドのシムとして 'myCallback'を効果的に使うでしょう。 – 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版もありますので一度徹底してください。

0

は、ライブラリ、ネットワーキング、この非同期ソケットをチェックアウト:

http://code.google.com/p/cocoaasyncsocket/

AsyncSocketはCFSocketとCFStreamのためのオブジェクト指向のラッパーで、TCPとUDPをサポートしています。

関連する問題