Read Me About SimpleNetworkStreams.txt
上传用户:ccvv88
上传日期:2020-08-12
资源大小:97k
文件大小:5k
源码类别:

iPhone

开发平台:

Objective-C

  1. Read Me About SimpleNetworkStreams
  2. ==================================
  3. 1.1
  4. SimpleNetworkStreams shows how to do simple networking using the NSStream API.  The goal of this sample is very limited: it does not demonstrate everything you need to implement a fully fledged networking product (more on this below), rather, it focuses on using the NSStream API to move a realistic amount of data across the network.
  5. SimpleNetworkStreams requires iPhone OS 3.0 or later, although the core networking code should also work on iPhone OS 2.x and Mac OS X.
  6. Packing List
  7. ------------
  8. The sample contains the following items:
  9. o Read Me About SimpleNetworkStreams.txt -- This file.
  10. o Simplifying Assumptions.txt -- More documentation.
  11. o SimpleNetworkStreams.xcodeproj -- An Xcode project for the sample.
  12. o Resources -- The project nib, images, and so on.
  13. o Ancillary Code -- A directory full of code that's not directly relevant to the main function of this sample.
  14. o SendController.[hm] -- A view controller that sends files.
  15. o ReceiveController.[hm] -- A view controller that receives files.
  16. o ReceiveServerController.[hm] -- A view controller that implements a server to receive files.
  17. o SendServerController.[hm] -- A view controller that implements a server to send files.
  18. Using the Sample
  19. ----------------
  20. You can test the sample with one device (using loopback), one simulator (using loopback), two devices, two simulators (on different machines), a device and a simulator, a device and the Mac command line, and a simulator and the Mac command line.  All devices and simulators must be on the same Wi-Fi network.
  21. Testing with the GUI is simple:
  22. 1. Run the program on one device (or simulator).
  23. 2. Switch to the "Receive Server" tab and tap Start.
  24. IMPORTANT: If the server fails to start with the message "Registration failed", it's likely that another copy of the server is running on the same network.  For more information about this limitation, see "Simplifying Assumptions" below.
  25. 3. Switch to the "Send Server" tab and tap Start.
  26. 4. If you're using another device (or simulator), run the program on that.
  27. 5. Switch to the "Send" tab and tap one of the images to send.
  28. 6. Switch to the "Receive" tab and tap Receive to receive an image.
  29. If you want to test against the Mac command line, switch to the Info tab for instructions.
  30. The program has four built-in test images with exponentially increasing size.  Transferring the first image, shown at the top left, will be very quick.  Transferring the last image, shown at the bottom right, will be very slow (a thousand times slower!).  This allows you to test various things that you couldn't test otherwise, like the Stop and Cancel buttons.  See -[AppDelegate pathForTestImage:] for more information on how these large images are created.
  31. Building the Sample
  32. -------------------
  33. The sample was built using Xcode 3.2 on Mac OS X 10.6 with iPhone SDK 3.0.  You should be able to just open the project and choose Build from the Build menu.  The resulting program should be compatible with all devices running iPhone OS 3.0 and later, although the bulk of my testing was done with an iPhone touch (second generation) running iPhone OS 3.0.
  34. How it Works
  35. ------------
  36. The sample is a very simple application of the NSStream API for networking.  Each view controller is a self-contained networking example.  The client view controllers (SendController and ReceiveController) create an NSNetService for a hard-coded Bonjour service name, then create an NSOutputStream or NSInputStream from that net service, then schedule that stream for asynchronous operations.  The bulk of the interesting code is in the -_startSend/_startReceive and -stream:handleEvent: methods.
  37. The server view controllers (ReceiveServerController and SendServerController) are a little more complex.  They create a listening TCP socket, wrap that socket in a CFSocket, and then register it with Bonjour using NSNetService.  When a connection arrives, they wrap the connection's socket in an NSStream and then schedule that stream for asynchronous operations.  The bulk of the interesting code is in the -_startServer, _startSend/_startReceive, and -stream:handleEvent: methods.
  38. Simplifying Assumptions
  39. -----------------------
  40. To make this sample easy to understand I made a number of simplifying assumptions.  If you're creating a real application, you should read the "Simplifying Assumptions.txt" document to see which of these assumptions might affect your application, and for pointers on how to turn this sample code into production-quality code.
  41. Credits and Version History
  42. ---------------------------
  43. If you find any problems with this sample, please file a bug against it.
  44. <http://developer.apple.com/bugreporter/>
  45. 1.0 (May 2009) was the first shipping version.
  46. 1.1 (Sep 2009) implemented some cosmetic changes to bring it in line with other, similar samples.
  47. Share and Enjoy
  48. Apple Developer Technical Support
  49. Core OS/Hardware
  50. 11 Sep 2009