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