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

iPhone

开发平台:

Objective-C

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