CFSocketSendData не будет отправлять данные?

Я новичок в сети Objective C. Я собрал приведенный ниже код для простого приложения WOL. Я могу успешно создать сокет, а затем установить адрес (я могу установить только адрес локальной машины, но это другой вопрос). Однако при попытке отправить данные с помощью CFSocketSendData данные не отправляются (отображается сообщение «Данные не отправлены»). Правильно ли я использую CFSocketSendData или есть проблема в другом месте?

Любая помощь будет принята с благодарностью, спасибо.

структура sockaddr_in адрес;

        memset(&addr, 0, sizeof(addr));
        addr.sin_len = sizeof(addr);
        addr.sin_family = AF_INET;
        addr.sin_port = htons(PORT); //port 
        inet_aton(IP, &addr.sin_addr);//IP is the network IP of the machine e.g 192.168.0.2


        NSData *address = [NSData dataWithBytes: &addr length: sizeof(addr)];

        if (CFSocketSetAddress(WOLsocket, (CFDataRef)address) != kCFSocketSuccess){
            NSLog(@"Address could not be set!");
       }
        else{
            NSLog(@"Address set");
            char ethadd []= "helloworld";
            CFDataRef Data = CFDataCreate(NULL, (const UInt8*)ethadd, sizeof(ethadd));
            if (CFSocketSendData(WOLsocket, NULL, Data, 0) < 0){
                NSLog(@"Data could not be sent!");
            }
            else NSLog(@"Data Sent");
        }

person Alex    schedule 25.07.2011    source источник


Ответы (1)


Вы не включили код CFSocketCreate(...) в свой фрагмент, но я предполагаю, что вы выбрали значения по умолчанию, семейство PF_INET и протокол TCP.

При использовании протокола TCP установки адреса недостаточно, вам необходимо установить соединение с конечной точкой назначения.

Сначала вызовите функцию...

CFSocketConnectToAddress (WOLsocket, address, 10.0);

тогда пришлите свои данные...

CFSocketSendData(WOLsocket, NULL, Data, 0)

person karmag    schedule 18.05.2012