At this point, we have covered the various I/O models available in Winsock. These models allow applications to tailor Winsock I/O according to their needs, from simple blocking I/O to high-performance completion port I/O for the maximum throughput possible. This chapter also concludes our discussion of the general-purpose aspect of Winsock. Up to this point, you have learned about available transport protocols, socket creation attributes, creating a basic client/server application, and other fundamental Winsock topics. In Chapters 9 through 14, we'll introduce specialized Winsock topics. The next chapter deals with socket options and ioctl commands that affect the behavior of both sockets and the underlying protocol.