Explain the differences between TCP and UDP, and when you would choose each protocol for a networked application.