在Delphi中编写网络代码的正常方式是使用Windows风格的重叠异步套接字I/O?
这是我之前对这个问题的研究:
在印地部件似乎完全同步.另一方面,虽然ScktComp单元确实使用WSAAsyncSelect,但它基本上只与BSD样式的多路复用套接字应用程序异步.您将被转储到单个事件回调中,就像您刚从循环中的select()返回一样,并且必须自己完成所有状态机导航.
使用Socket.BeginRead/Socket.EndRead,.NET的情况要好得多,其中延续会直接传递给Socket.BeginRead,这就是你选择备份的地方.编码为闭包的延续显然具有您需要的所有上下文等等.