Я решил свою проблему, используя другой метод (получил собственный сокет), и затем вместо использования CFSocketSetAddress я передал адрес во втором аргументе CFSocketSendData.
У меня нет ссылки / ссылки на изменения, так как это был какой-то код, который хранился на моем жестком диске со времен интенсивного поиска в Google.
Хотел бы сказать спасибо Дэвиду Гелхару, который указал мне правильное направление от моего предыдущего вопроса .
для всех, кому это может понадобиться, это мой код;
//Gets native & sets options
/*************************************************************************/
int desc = -1;
desc = CFSocketGetNative(WOLsocket);
int yes = 1;
if (setsockopt (desc, SOL_SOCKET, SO_BROADCAST, (char *)&yes, sizeof (yes)) < 0) {
NSLog(@"Set Socket options failed");
return EXIT_FAILURE;
}
//sets address socket - doesn't bind this is done in CFSocketSendData
/*************************************************************************/
unsigned long bcast = 0xffffffff;
struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_len = sizeof(addr);
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT); //port
addr.sin_addr.s_addr = bcast;
NSData *address = [NSData dataWithBytes: &addr length: sizeof(addr)];
//Sends Data
/*************************************************************************/
char ethadd []= "helloworld";
CFDataRef Data = CFDataCreate(NULL, (const UInt8*)ethadd, sizeof(ethadd));
if (CFSocketSendData(WOLsocket, address, Data, 0) < 0){
NSLog(@"Data could not be sent!");
return EXIT_FAILURE;
}
else NSLog(@"Data Sent");
}