On Mon, May 3, 2021 at 9:39 AM Winfried Ritsch <ritsch(a)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