My $0.02:
I think one way of comparing TCP and UDP is to look at some examples of what they are actually used for:
TCP: Web, Email, SSH, FTP
UDP: Voice, Video (some), DNS, Online gaming, (some)
TCP using applications are characterised by needing to deliver a perfect copy of a (possibly very large) piece of data, in the right order. To achieve this, it sacrifices latency.
UDP applications want to deliver lots of small pieces of discrete data as quickly as possible where reliability is not as important as latency. In voice (VoIP) for example, you don't want to retransmit a missed packet - a fragment of speech out of context is useless, and would create even more noise on the line.
I suspect the same applies to your application - your oscilloscope doesn't want to have to wait 100ms just so a dropped packet can be retransmitted - once the time has passed, that information isn't useful. What's more, if transmission has to be paused to recover from an error, it's not clear whether you'd ever be able to 'catch up' with that delay, and your oscilloscope might be out of sync with the measurement until you reset the transmission.
Dan
I'm building an oscilloscope based on the mbed that streams samples over Ethernet for processing on a PC. Should I use TCP or UDP? I'm thinking TCP since it handles all the error correction for me, but is there good example code for implementing raw TCP using the networking libraries?