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

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 "iPhoneHTTPServerAppDelegate.h"
  6. #import "HTTPServer.h"
  7. #import "MyHTTPConnection.h"
  8. #import "localhostAddresses.h"
  9. @implementation iPhoneHTTPServerAppDelegate
  10. @synthesize window;
  11. - (void)applicationDidFinishLaunching:(UIApplication *)application 
  12. {
  13. [window makeKeyAndVisible];
  14. NSString *root = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0];
  15. httpServer = [HTTPServer new];
  16. [httpServer setType:@"_http._tcp."];
  17. [httpServer setConnectionClass:[MyHTTPConnection class]];
  18. [httpServer setDocumentRoot:[NSURL fileURLWithPath:root]];
  19. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(displayInfoUpdate:) name:@"LocalhostAdressesResolved" object:nil];
  20. [localhostAddresses performSelectorInBackground:@selector(list) withObject:nil];
  21. }
  22. - (void)displayInfoUpdate:(NSNotification *) notification
  23. {
  24. NSLog(@"displayInfoUpdate:");
  25. if(notification)
  26. {
  27. [addresses release];
  28. addresses = [[notification object] copy];
  29. NSLog(@"addresses: %@", addresses);
  30. }
  31. if(addresses == nil)
  32. {
  33. return;
  34. }
  35. NSString *info;
  36. UInt16 port = [httpServer port];
  37. NSString *localIP = nil;
  38. localIP = [addresses objectForKey:@"en0"];
  39. if (!localIP)
  40. {
  41. localIP = [addresses objectForKey:@"en1"];
  42. }
  43. if (!localIP)
  44. info = @"Wifi: No Connection!n";
  45. else
  46. info = [NSString stringWithFormat:@"http://iphone.local:%d http://%@:%dn", port, localIP, port];
  47. NSString *wwwIP = [addresses objectForKey:@"www"];
  48. if (wwwIP)
  49. info = [info stringByAppendingFormat:@"Web: %@:%dn", wwwIP, port];
  50. else
  51. info = [info stringByAppendingString:@"Web: Unable to determine external IPn"];
  52. displayInfo.text = info;
  53. }
  54. - (IBAction)startStopServer:(id)sender
  55. {
  56. if ([sender isOn])
  57. {
  58. // You may OPTIONALLY set a port for the server to run on.
  59. // 
  60. // If you don't set a port, the HTTP server will allow the OS to automatically pick an available port,
  61. // which avoids the potential problem of port conflicts. Allowing the OS server to automatically pick
  62. // an available port is probably the best way to do it if using Bonjour, since with Bonjour you can
  63. // automatically discover services, and the ports they are running on.
  64. // [httpServer setPort:8080];
  65. NSError *error;
  66. if(![httpServer start:&error])
  67. {
  68. NSLog(@"Error starting HTTP Server: %@", error);
  69. }
  70. [self displayInfoUpdate:nil];
  71. }
  72. else
  73. {
  74. [httpServer stop];
  75. }
  76. }
  77. - (void)dealloc 
  78. {
  79. [httpServer release];
  80.     [window release];
  81.     [super dealloc];
  82. }
  83. @end