title: Writing a highly scalable TCP/IP server in C# 5 with the async/await pattern?
body: <p>I'm tasked with designing a fairly simple TCP/IP server that must accept connections from multiple clients. It needs to be written in C#, and I'm using .NET 4.5. That said, I'm not sure what is the current "state of the art" for TCP/IP server/client scalability in .NET 4.5.</p>
  
  <p>I did see this post: <a href="https://stackoverflow.com/questions/869744/how-to-write-a-scalable-tcp-ip-based-server">How to write a scalable Tcp/Ip based server</a>. But that relates to .NET 2.0 and 3.5 and makes no mention of the async/await pattern.</p>
  
  <p>I am capable of writing a server the "old way"... but I want to know what the "new way" is.</p>
  
  <ul>
  <li>What is the best way to use the new Async methods on Socket, TcpClient or TcpListener to create a scalable server in C#?</li>
  <li>Do the new Async methods leverage I/O Completion Ports?</li>
  <li>Is rolling your own Socket listener more efficient, or are the TcpListener/TcpClient classes pretty good now?</li>
  </ul>
  
  <p>EDIT:  Additional questions.</p>