blob: f1e24e2d8884c8f8f34d3d986940d004c7ceed6b [file] [log] [blame]
/* Copyright (c) 2014 The Regents of the University of California
* Barret Rhoden <brho@cs.berkeley.edu>
* See LICENSE for details.
*
* Simple web client, gets a single page. Used for debugging mostly. */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <assert.h>
#include <iplib/iplib.h>
#include <parlib/net.h>
/* simple test, gets a single web page. no url parsing, no timeout detection,
* etc. pass it the IP addr and page to fetch.
*
* check out http://www.d.umn.edu/~gshute/net/http-script.html for some info. */
int main(int argc, char *argv[])
{
char *host, *page, *port;
int dfd, ret;
char buf[256];
char addr[256];
host = "146.148.59.222";
page = "files/test.html";
port = "80";
if (argc > 1)
host = argv[1];
if (argc > 2)
port = argv[2];
if (argc > 3)
page = argv[3];
printf("FYI, Usage: %s [HOST [PORT [PAGE]]]\n", argv[0]);
printf("Trying to access http://%s:%s/%s\n", host, port, page);
/* manually making our own addr (no mkaddr, which was racy anyway) */
ret = snprintf(addr, sizeof(addr), "tcp!%s!%s", host, port);
if (snprintf_error(ret, sizeof(addr))) {
perror("Addr string too long");
exit(-1);
}
dfd = dial9(addr, 0, 0, 0, 0);
if (dfd < 0) {
perror("Bad Data FD");
exit(-1);
}
/* short get style */
snprintf(buf, sizeof(buf), "GET /%s\r\nConnection: close\r\n\r\n",
page);
ret = write(dfd, buf, strlen(buf));
if (ret < 0) {
perror("Write");
exit(-1);
}
/* buf - 1, to leave room for a \0 when we print */
while ((ret = read(dfd, buf, sizeof(buf) - 1)) > 0) {
assert(ret < sizeof(buf));
/* trim to print only what we received */
buf[ret] = 0;
printf("%s", buf);
}
}