Comms/CPN is a CPN ML library which makes it possible for CPN Tools to communicate based on TCP/IP with external application and processes.

Using the library

For a detailed description of Comms/CPN, the user is referred to the paper

G. Gallasch and L. M. Kristensen. COMMS/CPN: A communication infrastructure for external communication with Design/CPN. In K. Jensen, editor, Third Workshop and Tutorial on Practical Use of Coloured Petri Nets and the CPN Tools, DAIMI PB-554, pages 75–91. Department of Computer Science, University of Aarhus, Denmark, 2001.

A canreceive primitive has been added, w.r.t. what is described in the paper above, making it possible to check whether data is available on a given connection.

The most important functions from the paper are explained on the page for Comms/CPN functions.

Java files

Several Java files are available for connecting CPN Tools and Java processes.

C files

Two C files are available for connecting CPN Tools and programs written in C.

The files contain functions for establishing and disconnecting connections, as well as functions for sending and receiving strings. Note that these files have not yet been tested or used by the CPN Tools team.

Example net

The files for this net can also be found in a subdir of cpntools called Samples\\DiningPhilosophers


  • The library was developed by Guy Gallasch and Lars M. Kristensen, Computer Systems Engineering Centre, University of South Australia.
  • The development of the Comms/CPN library has been supported by the Australian Defence Science and Technology Organisation (DSTO) under contract no. 687237, and by a Divisional Small Grant from the University of South Australia.
  • The Java applet for visualisation of the Dining Philosophers example is due to S. Nimsgern and F. Vernet: Communication between Coloured Petri Net Simulations and External Processes, Master Thesis, Department of Computer Science, University of Aarhus, 2000.
  • The C files were implemented by Sven Wünschmann as part of his diploma thesis in 2006.