Есть ли функция для разбора IP-адреса на 4 целых числа в iOS? - PullRequest
0 голосов
/ 28 февраля 2012

Что-то вроде inet_addr("127.0.0.1")?

Ответы [ 3 ]

3 голосов
/ 28 февраля 2012
NSString *ipAddress = [NSString stringWithString:@"127.0.0.1"];

NSArray *results = [ipAddress componentsSeparatedByString:@"."];
if ([results count] == 4) {
    NSLog(@"1 - %d", [[results objectAtIndex:0] intValue]);
    NSLog(@"2 - %d", [[results objectAtIndex:1] intValue]);
    NSLog(@"3 - %d", [[results objectAtIndex:2] intValue]);
    NSLog(@"4 - %d", [[results objectAtIndex:3] intValue]);
} else {
    NSLog(@"not valid ip");
}
0 голосов
/ 28 февраля 2012

Думаю, вам следует проверить Руководство по программированию строки .Если это что-то простое, вы можете просто сделать что-то вроде

... [yourSting stringcomponetsSeparatedByString@"."]; //('formatting String Objects' section)

или вы можете сделать что-нибудь, включающее сканеры из примера кода Apple («Сканеры»), чтобы вы могли искать в соответствующей строке то, что вы хотите:

NSString *string = @"Product: Acme Potato Peeler; Cost: 0.98 73\n\
Product: Chef Pierre Pasta Fork; Cost: 0.75 19\n\
Product: Chef Pierre Colander; Cost: 1.27 2\n";

NSCharacterSet *semicolonSet;
NSScanner *theScanner;
NSString *PRODUCT = @"Product:";
NSString *COST = @"Cost:";
NSString *productName;
float productCost;

NSInteger productSold;
semicolonSet = [NSCharacterSet characterSetWithCharactersInString:@";"];
theScanner = [NSScanner scannerWithString:string];
while ([theScanner isAtEnd] == NO)
{
if ([theScanner scanString:PRODUCT intoString:NULL] &&
[theScanner scanUpToCharactersFromSet:semicolonSet
intoString:&productName] &&
[theScanner scanString:@";" intoString:NULL] &&
[theScanner scanString:COST intoString:NULL] &&
[theScanner scanFloat:&productCost] &&
[theScanner scanInteger:&productSold])
{
NSLog(@"Sales of %@: $%1.2f", productName, productCost * productSold);
}
}

Удачи

0 голосов
/ 28 февраля 2012

Вы должны называть что-то вроде

 inet_pton(AF_INET, "239.255.255.250", &broadcastAddr.sin_addr);

Вы должны включить

  #include <arpa/inet.h>
...