
#include <iostream>
#include <sstream>
#include "sock/tcp.hpp"

int main(int argc, char* argv[]) {

	using namespace sock;

	try {

		tcp::ClientSocket sock(AF_INET);
		Addr4 addr( Ip4(argv[1]), hton<Port>(80) );
		sock.Connect<Addr4>(addr);

		std::stringstream oss;
		oss << "GET " << argv[2] << " HTTP/1.0\r\n";
		oss << "Host: " << argv[1] << "\r\n";
		oss << "Accept: */*\r\n";
		oss << "Connection: close\r\n\r\n";
		std::string request = oss.str();

		sock.Write(request.c_str(), request.size());

		size_t size;
		do {
			char buf[4096];
			size = sock.Read(buf, sizeof(buf) - 1);
			buf[size] = '\0';
			std::cout << buf;
		} while (size > 0);

	} catch (Exception& e) {

		std::cerr << "Error: " << e.func() << " " << e.code() << " : " << e.what() << "\n";
		return 1;

	}

	return 0;
}
