Meet Paul --#-- OK, now we'll write the main() function, compile the sucker and name him Paul (he's Pete's partner, right?).

#include extern char *getHost(char *hostName, int *portNum, char *arg); extern void die(char *s); extern int openSocket(char *host, int port); extern char *formRequest(); extern int writeToSocket(int sock, char *request); extern void printServerResponse(int socket); int main(int argc, char *argv[]) { char hostName[128]; int portNum = 80; int sock, result; char *request; if (argc < 2) { die("Usage: connect hostname:port"); } getHost(hostName, &portNum, argv[1]); request = formRequest(); if ((sock = openSocket(hostName, portNum)) < 0) die("Can't open socket"); result = writeToSocket(sock, request); if (result < 0) die("Server barfed on request"); printServerResponse(sock); free(request); return 0; }
Use the following command line to compile:

cc -o paul paul.c request.c sockets.c -lm -lnsl
Or, use this Makefile:

CC=gcc CFLAG= LIBS=-lm -lnsl OBJS=main.o sockets.o request.o paul: $(OBJS) $(CC) -o paul $(OBJS) $(LIBS) paul.o: paul.c $(CC) $(CFLAG) -c paul.c sockets.o: sockets.c $(CC) $(CFLAG) -c sockets.c request.o: request.c $(CC) $(CFLAG) -c request.c