Interprocess Communication Library (IPC)
for Windows x86, x64

Making fast IPC communication between processes and applications look easy.

Version 2

Interprocess Communication Library (IPC) for Windows x86 and x64. Visual C++, .Net, VB .Net, C#, Delphi, Visual Basic, VB6, Visual Studio. Windows x64, x86.

Introduction

Interprocess Communications (IPC) enables applications to share data. A direct access to applications private data is resticted by the operating system. Applications are usually sharing data by exchanging files on disk, which is a reliable and easy way for sharing data but inefficient since it is rather slow. A more faster way for sharing data between application is the realtime access to it. Interprocess Communications (IPC) is the fastest way for doing realtime access.

ADONTEC's Interprocess Communication Library (ADIPC) is a very low latency and fast interprocess communication library. This library enables fast data exchange between processes on low CPU cycles.

Add interprocess communication to your software applications easily. This library enables your software applications to exchange data fast using a few lines of code only.

Advertise a name for the connection and exchange data betweeen processes easily.

Event Driven IPC

The complete data exchange is driven by events and is executing transparently in background. Your application takes actions only when there is need to. No busy waiting, no blocking of the GUI!

The event driven strategy nearly eliminates the need for additional threads, although this library can be used in a multi-threaded application without restrictions. Thus this library removes complicate tasks from your application, eases the development process and speeds up execution.

Need to transfer binary data or complicate data structures ?

ADONTEC's - Interprocess Communication Library (IPC) does not set any limits on the data type you need to transmit between applications.

Server, Client or both ?

The application can act as a server or client or both. A client is requesting a service or functionality from a server. A server responds to a client request.

This inter process communication library (IPC) allows client-to-server, server-for-many-clients and client-to-many-server communication (connections).

A server is usually advertising a name (pier) for the service it offers and clients are connecting to that. A very easy to understand concept and easily to integrate. Very little new code needed. But if you need to do some complex data communication protocol, this API will provide what you need. Samples demonstrate this too.

One or more connections

Use one or multiple concurrent IPC connections simultaneously. A server can serve many clients and a client can connect to many servers simultaneously. A server can also establish IPC connections to other servers as any client can.

Low CPU consumption

The used "Low Latency" algorithms reduce unnecessary CPU consumption thus your application does almost appearing pretty idle.

Excellent system response and data throughput

The fast and easy going data exchange will let the application shine brighter.

Example

The following example demonstrates how interprocess data exchange can work by using this IPC library. See the following pseudo code:

Server only is listen to the endpoint pier1 (logical address)
INT OnIPCEvent(hCon,
               SenderAddress,
               DataSize,
               DataBuffer)
BEGIN
          // handle data, transmit reply
  :
  MySendReply(SenderAddress)
END
  :
          // Setup endpoint (own logical address)
hCon = ADIPC_StartListen("pier1", OnIPCEvent, ..);
          // A server is ready now to accept requests and to
          // reply through the event function OnIPCEvent.

  :       // Do anything your program does ...

          // Once done, release allocated resources
ADIPC_StopListen(hCon)  // End IPC, bye now

 

Server/Client: Endpoint pier2 is talking to pier1
INT OnIPCEvent(hCon,
               SenderAddress,
               DataSize,
               DataBuffer)
BEGIN
         // handle data, transmit reply
  :
  MySendReply(SenderAddress)
END
  :
         // Setup endpoint (own logical address)
hCon = ADIPC_StartListen("pier2", OnIPCEvent, ..);
         // A server is ready now to accept requests and to
         // reply through the event function OnIPCEvent.

         // A client would establish a connection to the server
         // by using the following:
Repeat   // Wait until the remote server gets ready
  Address = ADIPC_QueryRemoteAddress("pier1")
Until (Address < > 0)

ADIPC_SetRemoteAddress(hCon, Address)  // remember it

Repeat   // now an active virtual connection line exists
         // transmit and receive data
  pData = ADIPC_AllocateBuffer(hCon, strlen("Hello"), "Hello");

  ADIPC_SendData(hCon, pData)    // send data

  ADIPC_FreeBuffer(pData)        // release the data buffer
Until bDone
  :
         // Once done, release allocated resources
ADIPC_StopListen(hCon)   // End IPC, bye now

The endpoint (pier name) defines one side of the virtual connection line and the logical address where an application can receive data. The virtual connection line consist of two endpoints, one on each side.
ADIPC_StartListen and ADIPC_StopListen can be called at any time, preferable at program start (Create) and end (Close).

Limitless

This IPC library sets no limits on the amount of inter-process communication (IPC) connections an application can establish or serve. It is only limited by the available system resources.

64 Bit Application (x64)

ADONTEC's Interprocess Communication Library (IPC) also supports 64 Bit applications and it enables application of different CPU mode (32, 64 Bit) to communicate with each other.

Any of the following combinations is possible:
32 Bit «---------» 32 Bit
64 Bit «---------» 64 Bit
32 Bit «---------» 64 Bit
64 Bit «---------» 32 Bit

Well informed

An event reports data as soon received.
At any moment it is known if the remote is still available. If it goes away the application will know.

Summary

If you're looking for a fast, easy to use and rock solid inter-process communication library then look no further. Increase your productivity and your software's stability with ADONTEC's Interprocess Communication Library. A fully matured, extremely optimized and well documented IPC component.

ADONTEC's Interprocess Communication Library is a fast and portable solution supporting different Windows versions and compilers.

Samples
for major compilers (e.g. C/C++, C#, Delphi, Pascal, Visual Basic, VB net) are included.
This Document demonstrates different examples that communicate with each other and are included in this product (32 and 64 bit).

Free technical support
included for registered users.

Supported Compiler
C#, C/C++, Delphi incl. CodeGear & Embarcadero RAD, RAD Studio 10, Delphi 10 Berlin & Tokyo, Free Pascal / Lazarus, Microsoft C/C++, Microsoft Visual C++, MinGW, .NET, Pascal, Visual Basic .NET, Visual Studio 5, Visual Studio 6 (VC6), Visual Studio 2003, Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio 2012, Visual Studio 2013, Visual Studio 2015, Visual Studio 2017, Visual Studio 2019, Visual Studio 2022.

License Agreement License terms
Short version: Applications developed using this library can be distributed royalty free.

 

Incredibly powerful yet easy to use API. Fast integration, fast execution.

 


Home    Back
Modified at:

Software and ActiveX communication libraries and components
It Simply Works!