[1] This is similar to an Internet domain socket that allows data to be exchanged between two processes executing on different host computers.
The only range of communication difference is the method to convert a name to the address parameter needed to bind the socket's connection.
The server process binds its socket to an address, opens a listen channel, and then continuously loops.
Inside the loop, the server process is put to sleep while waiting to accept a client connection.
[4] Upon accepting a client connection, the server then executes a read system call that will block wait.
[8] The application programming interface has been ported to virtually every Unix implementation and most other operating systems.
For a Unix domain socket, data (network packets) are passed between two connected processes via the transport layer — either TCP or UDP.
Because each range of communication has its own actual parameter, this generic structure was created as a cast placeholder.
[4] The accept() system call will return a file descriptor when a client process executes connect().
Stream socket input/output may execute the regular-file system calls of read() and write().
[6] However, more control is available if a stream socket executes the socket-specific system calls of send() and recv().
Alternatively, datagram socket input/output should execute the socket-specific system calls of sendto() and recvfrom().