В настоящее время я изучаю интернет. Я пытаюсь создать простой прокси-сервер, который просто перенаправляет запрос со стороны сервера на клиентскую сторону. Im в настоящее время соответствует this учебник. Это, как далеко я получил:Показать HTTP-запрос, отправленный на мой сервер с помощью C++
#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);
}
}
Сейчас им просто показывая «привет» на каждой странице я посещаю. Прежде чем реализовать клиентскую часть идентификатора прокси-сервера, чтобы вместо этого отобразить HTTP-запрос Get, который мой браузер отправляет на серверную часть прокси. Моя проблема в том, что я не знаю, как ее получить. Руководство, которое я использую, не критично относится к этому.
Редактировать: я добавил вызов recv, который, предположительно, должен прочитать все, начиная с сокета в буфере. К сожалению, он ничего не делает
Спасибо, у меня есть wirehark, и я знаю, как его использовать. Я должен был быть более конкретным. Я хочу, чтобы использовать вызовы C++ для достижения моей цели. – Bonbin
ОК, я отвечал, как отображать/проверять запрос на получение, а не через C++. Я рассматриваю возможность удаления моего ответа, но это может быть полезно для тех, кто должен видеть трафик http независимо от метода. –