Distributed programming is usually hard and very different from "normal" programming. For example, to send some data to another part of the application running on a different
computer, the developer often has to explicitly write code to transfer the data over the network. But there must be a simpler way!

One standard way of inter-process data exchange and synchronization under Linux is SystemV IPC. It provides system calls for sending messages from one process to another (message queues). It also
lets processes share a memory space between themselves, so one process' writes will be available
to another process immediately (shared memory segments). System V IPC also provides semaphores, which lets processes synchronize their activities, by allowing processes to wait for each other.
Making these
mechanisms work over a network, just like they do on a single computer, would make distributed programming very simple, and this is exactly what DIPC has done!

DIPC (Distributd Inter-Process Communication) eases network data transfer and synchronization by making data transfer over a network look exactly like normal System V IPC operations. It does not require
any special hardware. In more technical terms, it is a software-only solution for transparent distributed data exchange on a network of Linux computers. It operates at the
kernel level, and allows the programmer to use System V semaphores, message queues, and shared memory segments over the network with very little source code change.

The code at the end of this page shows a very simple program that uses DIPC to send a message from one process to another, over the network.
This source code is mainly System V IPC programming. The addition required by DIPC is highlighted in
bold. If you leave out the bold part, then it is normal System V IPC code. As you can see, the developer doesn't need to do much to make
his or her application able to run
over a network!

DIPC's development in pursued at Source Forge. Please join the effort.

The sample program which follows sends 512 bytes, containing a message, from one
process to another via a message queue. If run on a cluster with DIPC properly
installed, the message will traverse the network.

A few notes about DIPC programs: They can be run on computers with no support
for DIPC in the kernel, though in this case obviously all the processes should run in the
same machine. DIPC does not distribute any code accross the network, so the
user must start each process remotely as appropriate (maybe via 'rsh' or
similar methods).