title: Difference between Unix domain SOCK_DGRAM and SOCK_SEQPACKET?
body: <p>According to the Linux man pages for Unix sockets, "Valid socket types in the UNIX domain are . . . SOCK_DGRAM, for a datagram-oriented socket that preserves message boundaries (as on most UNIX implementations, UNIX domain datagram sockets are always reliable and don't reorder datagrams); and (since Linux 2.6.4) SOCK_SEQPACKET, for a sequenced-packet socket that is connection-oriented, preserves message boundaries, and delivers messages in the order that they were sent."  (<a href="http://man7.org/linux/man-pages/man7/unix.7.html" rel="nofollow noreferrer">http://man7.org/linux/man-pages/man7/unix.7.html</a>).  </p>
  
  <p>I thought "always reliable and don't reorder datagrams" is the same as "delivers messages in the order that they were sent."  </p>
  
  <p>What's the practical difference between  SOCK_DGRAM and SOCK_SEQPACKET?</p>