0

我想在 iPhone 和 PC 之间创建一个 TCP 连接。

所以我正在创建两个 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)

我可以像这样注册我的对象的选择器吗?

4

3 回答 3

0

查看这个异步套接字网络库:

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

AsyncSocket 是 CFSocket 和 CFStream 的面向对象的包装器,支持 TCP 和 UDP。

于 2011-02-01T15:16:56.133 回答
0

要在 iPhone 和 PC 之间建立 TCP 连接,请参阅此链接

http://xmppframework.googlecode.com

它实际上是为mac开发的,还有一个iPhone版本,请仔细看一遍。

于 2011-02-01T14:45:01.063 回答
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

于 2011-02-01T16:00:32.233 回答