Simple data exchange between client and server over IP.
The data is stored in a Struct and then packed to be sent as binary data. fmt is the description of the struct content. In the client-server example below fmt = '!I30sd': the ! refers to the byte-order convenction (big-endian for nework in this case), I stands for unsigned-int (4 bytes), 30s stands for 30 char (1 byte each) and d stands for a double (8 bytes).
Line can be initialized both as a client and as a server. The server application must be launched before the client. When data is sent, the listener application runs the function action with the data received as first argument. actionargs can be used to share variables (in the example below it is used for a queue object).