Quelle est la différence entre les flux et les datagrammes dans la programmation réseau?

Quelle est la différence entre les sockets (flux) et les sockets (datagrammes)? Pourquoi utiliser l'un sur