Apa perbedaan antara stream dan datagram dalam pemrograman jaringan?

Apa perbedaan antara soket (aliran) vs soket (datagram)? Mengapa menggunakan satu di atas yang