简体   繁体   中英

Display HTTP Request sent to my server using c++

I am currently learning about the internet. I am trying to set up a simple proxy server that just forwards a request from the server side to its client side. Im currently following this tutorial. This is how far I have gotten:

#define MYPORT "3490"  // the port users will be connecting to
#define BACKLOG 10     // how many pending connections queue will hold

int main(int argc, const char* argv[]) {
    struct addrinfo hints;
    struct addrinfo *res;
    int sockIn;
    int sockOut;

    memset(&hints, 0, sizeof hints); // make sure its empty
    hints.ai_family = AF_UNSPEC;     // use IPv4 or IPv6, whichever
    hints.ai_socktype = SOCK_STREAM; // what kind of socket
    hints.ai_flags = AI_PASSIVE;     // fill in my IP for me

    //listens on the hosts ip address:
    getaddrinfo(NULL, MYPORT, &hints, &res);

    // make a socket, bind it, and listen on it:
    sockIn = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
    bind(sockIn, res->ai_addr, res->ai_addrlen);
    listen(sockIn, BACKLOG);

    freeaddrinfo(res); // free the linked-list

        struct sockaddr_storage their_addr;
        socklen_t addr_size;
        char buf[512];

        while(1) {
            addr_size = sizeof their_addr;
            struct sockaddr *addr = (struct sockaddr *)&their_addr;
            sockOut = accept(sockIn, addr, &addr_size);
            recv(sockOut, buf, sizeof buf, 0);
            for (auto ch : buf) {
                cout << ch;
            }
            close(sockOut);
        }
}

Right now im just displaying "hi" on every page I visit. Before I implement the client side of the proxy id like to instead display the HTTP Get Request that my browser sends to the server side of the proxy. My issue is that I dont know how to retrieve it. The guide I'm using is not adressering this.

Edit: I added a recv call that is suppose to read everything from the socket in to a buffer. Unfortunately it does not cout anything

download and install wireshark (packet sniffer), or else Fiddler Fiddler (HTTP proxy). You will easily be able to inspect HTTP traffic. I recommend you start with fiddler. Install on computer where your browser is located.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM