Skip to content

Commit

Permalink
IP address from as NSString from NSData.
Browse files Browse the repository at this point in the history
  • Loading branch information
gabriel committed Jan 24, 2015
1 parent c333ccf commit a239f4f
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
5 changes: 5 additions & 0 deletions Classes/GHNSData+Utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,9 @@
*/
- (NSString *)gh_hexString;

/*!
Get IP address string from data object.
*/
- (NSString *)gh_IPAddressAsString;

@end
24 changes: 24 additions & 0 deletions Classes/GHNSData+Utils.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

#import "GHNSData+Utils.h"
#import <arpa/inet.h>

@implementation NSData (GHUtils)

Expand All @@ -19,4 +20,27 @@ - (NSString *)gh_hexString {
return hex;
}

- (NSString *)gh_IPAddressAsString {
struct sockaddr *addr = (struct sockaddr*)[self bytes];
if (addr->sa_family == AF_INET) {
struct sockaddr_in *addr4 = (struct sockaddr_in*) addr;
char addr4CString[INET_ADDRSTRLEN];
if (!inet_ntop(AF_INET, &addr4->sin_addr, addr4CString, INET_ADDRSTRLEN)) {
return nil;
} else {
return [[NSString alloc] initWithUTF8String:addr4CString];
}
} else if (addr->sa_family == AF_INET6) {
struct sockaddr_in6* addr6 = (struct sockaddr_in6*) addr;
char addr6CString[INET6_ADDRSTRLEN];
if (!inet_ntop(AF_INET6, &addr6->sin6_addr, addr6CString, INET6_ADDRSTRLEN)) {
return nil;
} else {
return [[NSString alloc] initWithUTF8String:addr6CString];
}
} else {
return nil;
}
}

@end

0 comments on commit a239f4f

Please sign in to comment.