iOS, как зарегистрировать селектор в качестве обратного вызова потокового события? - PullRequest
0 голосов
/ 01 февраля 2011

Я хочу создать TCP-соединение между iPhone и ПК.

Итак, я создаю два CFStreamRef-s и хочу зарегистрировать мой селектор объектов, который будет вызываться при появлении новых байтов для чтения.

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

AsЯ понял по ссылке выше, что я могу зарегистрировать функцию для потока чтения следующим образом

CFReadStreamSetClient(myReadStream, registeredEvents, myCallBack, &myContext)

Могу ли я зарегистрировать селектор моего объекта следующим образом?

Ответы [ 3 ]

0 голосов
/ 01 февраля 2011

Проверьте эту сетевую библиотеку асинхронных сокетов:

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

AsyncSocket является объектно-ориентированной оболочкой для CFSocket и CFStream и поддерживает TCP и UDP.

0 голосов
/ 01 февраля 2011

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

0 голосов
/ 01 февраля 2011

Чтобы установить TCP-соединение между iPhone и ПК, перейдите по этой ссылке

http://xmppframework.googlecode.com.

Она действительно разработана для Mac, есть и версия для iPhone, пожалуйста, пройдите ее один раз.

...