On Mon, May 3, 2021 at 9:39 AM Winfried Ritsch <ritsch@iem.at> wrote:
Am Montag, 3. Mai 2021, 11:48:07 CEST schrieb Fons Adriaensen:
> On Sun, May 02, 2021 at 09:37:40PM +0200, Winfried Ritsch wrote:
> > Please disagree if you can reference:
> > - OSC 1.0 ist not only UPD
>
On the other side, with the type tags, you know when a message is complete if
you wait for number of bytes or the the type ends(, if no bytes got lost...)
The problem of UDP: UDP applications must be willing to accept some packet
loss or this has to be handled by the protocol implemented with OSC. and/or it
should be a "stateless"  protocol.
So if package loss is a problem, think of a mute action TCP/IP is more easy to
handle, since we know when a connection is lost.
So maybe its better to do stream parsing and a stream protocol than UDP and
some handshake or failsave protocol, but of course this depends on the use
case, so on a sound system critical mixer I prefer TCP/IP. 


I wonder how much common libs have overcome those problems in practice - for example in the gaming and high volume data applications I am aware of they use the Aeron github lib that claims to be an ‘Efficient reliable UDP unicast , UDP multicast, and IPC message transport’ . 

Aeron encodes its messages in binary. The lib uses memory mapped files stored in /dev/shm that are transferred over UDP. In my experience, I hit several servers implementing Aeron very hard all day long and nothing gets dropped under normal circumstances.

Yet for the OSC use cases that I have for live performances, I just need to send a couple oscsend commands over a 5 minute period. I can't imagine normal use cases being much different for the mixers that expose their features with OSC messages defined in JSON.

Robert