These example clients require a broker or similar intermediary that
supports the AMQP 1.0 protocol, allows anonymous connections and
accepts links to and from a node named 'examples'.

------------------------------------------------------------------

sender.c

A simple message sending client.  This example sends all messages but
the last as pre-settled (no ack required).  It then pends waiting for
an ack for the last message sent before exiting.

Use the '-h' command line option for a list of supported parameters.

------------------------------------------------------------------

receiver.c

A simple message consuming client.  This example receives messages
from a target (default 'examples').  Received messages are
acknowledged if they are sent un-settled.  The client will try to
decode the message payload assuming it has been generated by the
sender example.

Use the '-h' command line option for a list of supported parameters.





