Network Programming
Distributed Shared Memory.

The Distributed Shared Memory client and server are fully implemented with multicasting, multithreaded over UDP protocol. Multicasting realiability is built into mdsmc using select with a timeout value. If timeout occurs mdsmc resends reqeust to multicast groups until all servers reply. mdsmd is multithreaded, each request occurs in its own thread. Race conditions are prevented by using mutex. Mutex locks the entire table DSM table for new and delete requests, and locks the respective table entry for read and write reqeusts. mdsmc sends all requests to mcast group through the mcast socket specified by command line arguments. All replies are received on a separate receive socket. mdsmd receives all requests through mcast sockets specified by command line arguments. All replies are sent on a separate unicast socket.
[view the full project...]