Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How reliable are unix domain sockets?

I'm trying to figure out a protocol to use with domain sockets and can't find information on how blindly the domain sockets can be trusted.

Can data be lost? Are messages always received in the same order as sent? Even when using datagram sockets?

Are transfers atomic? When reading the socket, can I trust that I get the whole message on one read or do I have to check it myself?

like image 374
Purple Tentacle Avatar asked Oct 14 '09 15:10

Purple Tentacle


1 Answers

From 'man AF_UNIX':

Valid types are: SOCK_STREAM, for a stream-oriented socket and 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);

like image 71
Kristof Provost Avatar answered Oct 04 '22 14:10

Kristof Provost