#include "sockets/tcpsocket.h" #include "sockets/http.h" #include // g++-mp-4.5 -std=c++0x -I ../common testhttp.cpp -D_UNIX -L/opt/local/lib -lboost_regex-mt -lboost_thread-mt ../common/stringutils.cpp -liconv class httpcb : public http::callback { public: virtual void status(const std::string& version, const std::string& status, const std::string& desc) { printf("v%s stat=%s: '%s'\n", version.c_str(), status.c_str(), desc.c_str()); } virtual void request(const std::string& verb, const std::string& request, const std::string& request_version) { printf("req: %s %s %s\n", verb.c_str(), request.c_str(), request_version.c_str()); } virtual void headers(const http::headers& h) { printf("headers:\n%s\n", h.str().c_str()); } virtual void data(const uint8_t*data, size_t n) { printf("data:\n%s\n", hexdump(data, n).c_str()); } }; int main(int, char**) { try { http::callback_ptr cb1(new httpcb()); http::request req1("http://localhost/test?a=b&c=d"); req1.addhdr("Connection", "keep-alive"); http::callback_ptr cb2(new httpcb()); http::request req2("http://www.geenstijl.nl/"); req2.addhdr("Connection", "keep-alive"); http::request req3("http://localhost/~itsme/buildnrs/tst.pl?a=b&c=d"); req3.basicauth("gsmk", "gsmksecret"); req3.addhdr("Connection", "keep-alive"); while (1) { tcpsocket_ptr tcp(new tcpsocket()); tcp->connect(tcpaddress("127.0.0.1:80")); http server(tcp); server.get(req1, cb1); cb1->wait(); server.get(req3, cb1); cb1->wait(); tcpsocket_ptr tcp2(new tcpsocket()); tcp2->connect(tcpaddress("81.173.64.50:80")); http server2(tcp2); server2.get(req2, cb2); cb2->wait(); } } catch(...) { printf("E\n"); } printf("done\n"); return 0; }