Простые сокеты в Objective-C - PullRequest
       2

Простые сокеты в Objective-C

2 голосов
/ 04 августа 2010

У меня были проблемы с поиском простых руководств / примеров для базовых сокетов в Objective-C (используя NSSocketPort с NSFileHandle или используя CFSocket / CSNetwork). Кто-нибудь может порекомендовать руководство или полезный пример? Я был бы очень признателен за это! Я пытался использовать это , но оно не завершено. Спасибо!

P.S. Я застрял в этой части своего проекта на некоторое время и начинаю отчаянно нуждаться в помощи.

Ответы [ 2 ]

1 голос
/ 08 июня 2016

Я знаю, что отправляю ответ на очень старый вопрос. В случае, если вы (посетитель / stackoverflow {любовник / пользователи}) хотите закодировать свой собственный асинхронный сокет. Все, что вам нужно сделать, это отсоединить собственный дескриптор сокета от подключенного объекта CFSocketRef.

void TCPClientCallBackHandler(CFSocketRef s, CFSocketCallBackType callbacktype,CFDataRef address, const void *data,void *info){

    ClientSocket *obj_client_ptr=(__bridge ClientSocket*)info;
    switch (callbacktype) {
        case kCFSocketConnectCallBack :
            if(data){
                [obj_client_ptr StopClient];
            }
            else{ //detach socket started

                CFSocketNativeHandle handle=CFSocketGetNative(s);
                CFSocketSetSocketFlags(s, 0);
                CFSocketInvalidate(s);
                CFRelease(s);
                s=nil;//detach socket ended

                [obj_client_ptr ConfigureStream:handle];
                // handle pass to CFStreamCreatePairWithSocket then bridge to NSStream
            }
            break;


    }
}

если до сих пор не получил, то посмотрите на youtube: https://www.youtube.com/watch?v=bJP4nysTmnI

0 голосов
/ 04 августа 2010

Самый простой способ, который я нашел для этого, - это класс Cocoa Async Socket:

https://github.com/robbiehanson/CocoaAsyncSocket

Это довольно просто использовать, есть хорошая HTML-документация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...