Network Communication Using UICI
The new UICI library has three parts:
A tar file containing all of the code is available.
Look at the client, the serial server, and the parent-server.
Several version of the name resolution functions are given.
To compile the a thread-safe version use -DREENTRANCY=REENTRANT_POSIX.
For example, to compile the serial server under Solaris use:
cc -DREENTRANCY=REENTRANT_POSIX -o server server.c restart.c uiciname.c uici.c -lsocket -lnsl
To compile under Linux, just remove the -lsocket.
To compile under MAC OS X remove both -lsocket and -lnsl.
Server Strategies
- Serial server, server.c: One request at a time
- Parent server, serverp.c: Create a process to handle each request
- Threaded server: Create a thread to handle each request
- Process Worker Pool: Create n processes, each calls u_accept
- Thread Worker Pool: Create n threads, each calls u_accept
- Threaded Worker Pool with Bounded Buffer:
- Original process creates n threads and buffer of size m
- Original process accepts connections, puts communication file descriptors
in buffer
- Each thread removes a file descriptor from buffer and handles
a connection
Project Overview
- Compare serial server and two other alternatives
- Do a preliminary test with the serial server
- Design a full factorial experiment (Do not perform this experiment.)
- Perform a 2k experiment to see which factors are important
- Do a full factorial experiment with a subset of the factors