【发布时间】:2010-09-07 10:07:31
【问题描述】:
人们在 Delphi 中编写网络代码使用 Windows 风格的重叠异步套接字 I/O 的正常方式是什么?
这是我之前对这个问题的研究:
Indy 组件似乎完全同步。另一方面,虽然 ScktComp 单元确实使用 WSAAsyncSelect,但它基本上只异步 BSD 风格的多路复用套接字应用程序。你会在一个事件回调中被转储,就好像你刚刚从 select() 循环返回一样,并且必须自己完成所有状态机导航。
.NET 的情况要好得多,使用 Socket.BeginRead / Socket.EndRead,其中的延续直接传递给 Socket.BeginRead,而这就是您恢复的地方。一个被编码为闭包的延续显然拥有你需要的所有上下文,甚至更多。
【问题讨论】:
标签: delphi winapi sockets asynchronous networking