Is there a I/O completion port based component for Delphi?

Indy 10 has experimental support for fibers and IOCP:

From Indy knowledge base:

Indy 10 provides experimental support for the Fiber and I/O Completion Ports API in the Windows platforms. This support is designed to aid in creating more scalable servers where thousands of simultaneous client connections are required. For small- and medium-sized projects, the traditional thread-based servers are still available.

Fiber and IOCP APIs are supported only for the Windows 2000, 2003, and XP operating systems using Delphi version 7. Windows 95, 98, and ME are not supported. Delphi compilers prior to version 7 are also unsupported due to critical changes in the VCL since those releases.

This is not installed by default, and I haven't used it myself, so I am not sure how much usable it is. I guess you need to download the latest SVN revision from their repository to use this experimental feature.

Using it must be straightforward; you create a IdTcpServer instance, and instead of the default scheduler, you use the scheduler class which provides IOCP support. The rest should be considered internal work of the provided scheduler class.


Check http://voipobjects.com/index.php?page=delphi-iocp-library It is migrated iocpclasses.sourceforge.net (i'm an author). Enjoy :)

Update: voipobjects has not dedicated page for this library. It lives here https://bitbucket.org/voipobjects/iocpengine.

Update 2: bitbucket doesn't offer Mercurial anymore, so I moved to gitlab. https://gitlab.com/dmytro.bogovych/iocpengine


Synopse mORMot and SynCrtSock and DWScript's HttpSys2WebServer both have an IOCP-based server.

Synopse actually has two servers using IOCP, one via http.sys another via sockets.

Tags:

Delphi

Iocp