/* Copyright 1999 Scott Auge */ /* www.amduus.com */ /* Released under the revised BSD license */ /* Obtain HTML page from command line - suggest using wget or curl these days! */ #include #include #include #include #include #include #include #include #include #include /* #define DEBUG */ /* Uncomment for debug results */ #ifdef DEBUG #define DBUG(x) puts ((x)); #else #define DBUG(x) #endif int main (int argc, char **argv) { int sfd; struct hostent *hostaddr; struct sockaddr_in sin; unsigned short port = 80; int readreturn; extern int errno; char bptr; char *Machine = argv[1]; char *HTMLPage = argv[2]; char *UserDefinedPort; char Command [255]; if ( (argc < 3) || (argc > 4) ) { return 0; } if (argc == 4) { DBUG("Using user specified port\n") UserDefinedPort = argv[3]; port = (unsigned short) atoi(UserDefinedPort); } sfd = socket (PF_INET, SOCK_STREAM, 0); if (sfd < 0) { DBUG ("Socket Creation Failed...\n") return 0; } else DBUG ("Socket Successful\n") DBUG ("Looking up \n") if (( hostaddr = gethostbyname (Machine) ) == NULL ) { DBUG ("Host name lookup failed...\n") return 0; } else DBUG ( "Host successful\n") bzero((char *)&sin, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_port = htons(port); bcopy (hostaddr->h_addr, (char *)&sin.sin_addr, hostaddr->h_length); if ( connect ( sfd, (struct sockaddr *)&sin, sizeof(sin) ) < 0) { DBUG ("Connection failed...\n") return errno; } else DBUG ("Connection successful\n") DBUG ("Gonna write to socket\n") memset (Command, 0x00, sizeof(Command)); strcat (Command, "GET "); strcat (Command, HTMLPage); strcat (Command, " HTTP/1.0\n"); /* strcat (Command, "Host: "); strcat (Command, Machine); strcat (Command, "\nUser-Agent: gethtml/1.2 Webspeed Trx Srvr"); strcat (Command, "\nConnection: close\n"); */ DBUG(Command) write (sfd, Command, sizeof(Command)); write (sfd, "\n", sizeof("\n")); while (1) { readreturn = read (sfd, &bptr, 1 ); if (readreturn <= 0) break; putchar (bptr); } close (sfd); return 0; }