IPC in BSD UNIX Pipes –a pipe is an IPC mechanism for transmitting data from one process to another within a single machine –e.g., between a parent and child processes –a pipe is a uni-directional IPC channel with two ends, or sockets –Data that is written into one end can be read from the other
Sockets –a socket is an IPC mechanism for transmitting data from one process to another both within a single machine and between machines –a socket is a bi-directional IPC channel –Domains for sockets - a domain is the space from which an address is drawn for a socket UNIX domain(AF_UNIX) – uses the UNIX file system name space – used for local IPC Internet domain(AF_INET) – uses Internet address plus a port number – used for local and remote IPC
Stream Sockets –connection-oriented - communication takes place after a connection between two sockets is made –reliable, error-free, no message boundaries Datagram Sockets –no connections –each message is addressed individually –message boundaries exist –delivery not guaranteed –error checking not provided
Client-Server Communication using Sockets
More on Sockets More details on UNIX IPC can be found in Chapter 5 of the Bloomer’s book, Power Programming with RPC. Tutorials and sample programs can be found in the /afs/p/class/cse/cs600/ipc directory