2017-01-30 10 views
0

現在、私はインターネットについて学んでいます。私は単純なプロキシサーバーをセットアップしようとしていますが、サーバー側からクライアント側に要求を転送します。現在thisのチュートリアルに従っています。これは私がどれくらい手に入れたかです。C++を使用してサーバーに送信されたHTTPリクエストを表示

#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); 
     } 
} 

今私が訪れるすべてのページに「hi」と表示されています。 私がプロキシIDのクライアント側を実装する前に、代わりにブラウザがプロキシのサーバー側に送信するHTTP Get Requestを表示するようにしました。私の問題は、私はそれを取得する方法を知らないということです。私が使っているガイドは、これを強調しているわけではありません。

編集:ソケットからバッファにすべてを読み込むと思われるrecv呼び出しを追加しました。残念なことに、何も書かれていません

答えて

0

wireshark(パケットスニファ)、またはFiddler Fiddler(HTTPプロキシ)をダウンロードしてインストールしてください。 HTTPトラフィックを簡単に検査することができます。私はあなたがフィドラーから始めることをお勧めします。ブラウザがインストールされているコンピュータにインストールします。

+0

ありがとう、私はwiresharkを持っていて、私はそれを使う方法を知っています。私はより具体的にすべきだった。私がしたいことは、私の目標を達成するためにC++呼び出しを使用することです。 – Bonbin

+1

私はC++ではなく、getリクエストを表示/検査する方法に答えていました。私は私の答えを削除することを検討していますが、方法にかかわらずhttpトラフィックを見る必要がある人にとっては役に立ちます。 –

関連する問題