There are three options.

Option 1, create a transport library that can be loaded into the emulator:

and reference the transports contained in the distribution.

Option2, link your application to libemane and embed a transport class
instance. Developer FAQ #4 shows a code snippet for embedding a transport:

Option 3, send/receive UDP messages using the wire-level format:

  uint16 Msg Id = 1 (NETADAPTER_DATA_MSG)
  uint16 Length = Total Length in bytes of the entire message
  uint16 Src NEM Id
  uint16 Dst NEM Id
  uint16 Payload length bytes (P)
  uint16 Serialized control messages length bytes (C)
  uint8  Priority
  [P] Bytes payload
  uint16 Number of serialized control messages
  [C] Bytes serialized control messages

Where, each serialized control message in C has the following format:

  uint16 Control message Id
  uint16 Control message length bytes (S)
  [S] Bytes serialized control message

All uint16 values are in network byte order. See:


The benefit of option 1 and 2 is that you are using a stable API into
the emulator. Option 3 does not afford the same stability and a current
pending pull modifies this format as well as adds TCP support.

Steven Galgano
Adjacent Link LLC

On 08/11/2017 10:51 AM, Charles Pritchard wrote:
> What is required for sending and receiving data to the platform and
> transport endpoints respectively? Is a header required? Should the data
> be serialized?
> _______________________________________________
> emane-users mailing list
emane-users mailing list

Reply via email to