   When to use "I/O Completion Ports"?
  I've been reading a lot about completion ports for high-speed servers and I'm just wondering what kind of load should be expected before switching from normal sockets (either blocking or non) to completion ports?I haven't been able to find anything indicating when it's a good idea to use completion ports and when it's better to stick with the far simpler socket setups.Some resources say that completion ports are good when a high volume of traffic is expected that requires little cpu per packet, while others indicate that completion ports are better for traffic that requires a lot of processing for each packet, and others say even more contrary things.Would an IRC server be a good application of I/O completion ports?At which point do completion sockets become worth the extra effort, and what kind of requirements are they most suited for?   
  completion port i/o solution is most suited for large-scale, high volume (socket connections) apps (especially server-side).  one reason is because IOCP replaces the need for thousands of independent threads.Kuphryn[Edited by - kuphryn on July 24, 2006 8:18:25 PM];  IOCP is the only model that provides true scalability. Event-based models have inherent OS limitations.Chapter 6 of the book "Network Programming for Microsoft Windows" ( Clicky )is a good reference for determining your server strategy.   ;  Missing link: http://www.microsoft.com/mspress/books/sampchap/5726a.asp   ;Quote:Original post by Anonymous PosterMissing link: http://www.microsoft.com/mspress/books/sampchap/5726a.aspThanks, the chart on that page is exactly the kind of information I was looking for.   ;  As a general rule of thumb, only use IOCPs when making MMORPGs [or similar projects] with TCP, that already has the hardware available to justify for the extra coding overhead.   ;  You might want also grab this DirectPlay presentation ( Clicky ). DP8 is based on UDP over IOCP and this presentation gives out interesting network performance tuning tricks.-cb   