| lab5/part1 | mdb-lookup-server over netcat | fork, exec, pipes, FIFOs, process trees, dup2 | Turns a terminal program into a network service without writing any socket code: a named pipe plus netcat plus mdb-lookup, wired together with fork and exec. Two variants, one driving a shell script and one running several servers at once. |
| lab6/part1 | mdb-lookup-server: a real socket server | socket, bind, listen, accept, fdopen, sockaddr_in | The netcat scaffolding replaced by actual Berkeley sockets. Loads the database, accepts a TCP connection, reads keys line by line with fdopen, and writes matching records back down the same socket. |
| lab6/part2 | http-client: HTTP by hand | TCP client, gethostbyname, HTTP request framing, CRLF | Parses a URL, resolves the host, opens a socket, writes a GET request with correct CRLF framing, and separates response headers from the body. Writing the client first is what makes the server in lab7 make sense. |
| concepts/sockets | socket programming thread through the labs | socket, bind, listen, accept, connect, send, recv | Labs 5 through 7 build up in order: fake a server with netcat, write the server for real, write a client, then write a server that is also a client of another server. Each step removes one piece of scaffolding. |
| portfolio/http-server | HTTP Server in C | sockets, fork, linked lists, HTTP/1.0, Cloudflare tunnel | An iterative TCP server on the raw socket API, serving static files and records from a database also written in C. The write-up you are reading is served by it. |