UDP

UDP använder socket kommunikation utan länk (datagram), till skillnad från TCP som ett länkat
protokoll. I RemNodeUDP-objektet anges ip-adressen till den nod man ska kommunicera med och
port-nummer in båda ändarna. Det lokala port-numret måste vara unikt på noden.

Meddelanden sänds med en speciell header som adderas till data bufferten. Headern läggs i början
på meddelandet. Headern innehåller information om det sända meddelandet, och används för att
adressera meddelandet till rätt buffer-objekt. Headern ser ut så här:

char RemId1; /* STX (Hex 02) */
char RemId2; /* ETB (Hex 0F) in data message without acknowledge
                        ENQ (Hex 05) in data message with acknowledge
                        ACK (Hex 06) in acknowledge message */
short int Length; /* Number of bytes in message including this header */
short int MessId1; /* Message identity part 1 */
short int MessId2; /* Message identity part 2 */

Alla heltal i headern kommer skickas som big endian, dvs den mest signifikanta byten först. I
användardelen av meddelandet är det konstruktörens ansvar att konverterar mellan big och
little endian när detta behövs. Det går även att sända meddelanden utan header genom att sätta
attributet DisableHeader till TRUE. Vid kommunikation mellan två ProviewR system ska headern
finnas med. MessId1 och MessId2 hämtas från attributen RemTrans.Address[0] och
RemTrans.Address[1]. Mha headern kan man även ange att kvittens ska skickas på meddelandet. Om
kvittensen uteblir, upprepas sändningen av meddelandet cykliskt med det tid som ligger i
RemTrans-objekts RetransmitTime attribut.

Eftersom UDP/IP är ett länk-fritt protokoll finns funktionen att övervaka kopplingen med
keepalive-meddelanden. Detta anges med attributet UseKeepAlive.

Skicka meddelanden

Transporten kommer att skicka meddelanden till remote-porten, som består av header + data.
MessId i headern hämtas från RemTrans.Address[0,1], byte-switchade och sända som big endian.
Om MaxBuffer i remtrans-objektet > 0, sänds meddelandet med kvittens och lagras i
återsändnings-kön för remnoden. När kvittensen tas emot, tas meddelandet bort ur
återsändnings-kön. Detta utförs automatiskt av transport processen.

Ta emot meddelanden

När ett meddelande tas emot, kontrolleras först headern för att se att det är ett korrekt
RemTrans meddelande. Sedan letar man upp det RemTrans-objekt med Address[0,1] som matchar det
byte-switchade MessId-värdet. Om buffer-objektet är tillräckligt stort för meddelandet, lagras
meddelandet där, och DataValid flaggan sätts. Om RemNode objekete har markerats för att
användas utan header (DisableHeader-attributet är satt), letas efter en RemTrans, angiven som
mottagare, med tillräckligt stort buffer-objekt.