localhostAddresses.m
上传用户:kc0325
上传日期:2020-06-20
资源大小:204k
文件大小:1k
源码类别:

iPhone

开发平台:

Objective-C

  1. //
  2. //  This class was created by Nonnus,
  3. //  who graciously decided to share it with the CocoaHTTPServer community.
  4. //
  5. #import "localhostAddresses.h"
  6. #import <ifaddrs.h>
  7. #import <netinet/in.h>
  8. #import <sys/socket.h>
  9. @implementation localhostAddresses
  10. + (void)list
  11. {
  12. NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
  13. NSMutableDictionary* result = [NSMutableDictionary dictionary];
  14. struct ifaddrs* addrs;
  15. BOOL success = (getifaddrs(&addrs) == 0);
  16. if (success) 
  17. {
  18. const struct ifaddrs* cursor = addrs;
  19. while (cursor != NULL) 
  20. {
  21. NSMutableString* ip;
  22. if (cursor->ifa_addr->sa_family == AF_INET) 
  23. {
  24. const struct sockaddr_in* dlAddr = (const struct sockaddr_in*)cursor->ifa_addr;
  25. const uint8_t* base = (const uint8_t*)&dlAddr->sin_addr;
  26. ip = [[NSMutableString new] autorelease];
  27. for (int i = 0; i < 4; i++) 
  28. {
  29. if (i != 0) 
  30. [ip appendFormat:@"."];
  31. [ip appendFormat:@"%d", base[i]];
  32. }
  33. [result setObject:(NSString*)ip forKey:[NSString stringWithFormat:@"%s", cursor->ifa_name]];
  34. }
  35. cursor = cursor->ifa_next;
  36. }
  37. freeifaddrs(addrs);
  38. }
  39. NSURL *netIPURL = [NSURL URLWithString:@"http://whatismyip.org"];
  40. NSString *netIP = [NSString stringWithContentsOfURL:netIPURL encoding:NSUTF8StringEncoding error:nil];
  41. if (netIP)
  42. [result setObject:netIP forKey:@"www"];
  43. NSLog(@"IP addresses: %@", result);
  44. [[NSNotificationCenter defaultCenter] postNotificationName:@"LocalhostAdressesResolved" object:result];
  45. [pool release];
  46. }
  47. @end