人们在Delphi中编写网络代码的普遍方式是使用Windows风格的重叠异步套接字I/O吗?
这里是我对这个问题的先前研究:
Indy组件似乎完全是同步的。另一方面,虽然ScktComp单元确实使用WSAAsyncSelect,但它基本上只是将一个BSD风格的多路复用套接字应用程序异步化。你被投入到单个事件回调中,就像你刚从select()循环中返回一样,并且必须自己完成所有状态机导航。
.NET情况要好得多,使用Socket.BeginRead / Socket.EndRead,其中继续传递直接到Socket.BeginRead,那里就可以重新开始了。作为闭包编码的继续 obviously具有您需要的所有上下文以及更多。