2012-03-07 16 views
0

私はCコードを書いて、単純なネットワーキングのための非常に基本的なプロキシサーバーを作っています。ここでの目標は、プロキシを使用してブラウザから「GET」リクエストを取得し、それを適切なサーバーに転送し、サーバーから情報を取得してから、すべてのデータをブラウザに送り返すことです。これまでのところ、最初の部分を手に入れました。つまりGETコマンドの内容を取得しました。今私は本当に "フォワーディング"の部分に立ち往生しています。どのようにしてGETの内容をそのサイトに転送するのですか?www.example.comと言い、その情報を取得しますか?私は明らかに同じソケットディスクリプタを使用することはできませんし、私はそれを送信しようとしていたブラウザに戻ってGETコマンドを送信するため、送信コマンドを使用してみてください。私はBeejのガイドとランダムなオンラインヒントを使ってきました。これは私の最初のネットワーキングプログラムではありませんが、私は間違いなくここで立ち往生しています。私は、私は(GETにある)ホストのDNSルックアップを行う必要があると思ったIPを取得し、getaddrinfor +接続を使用して接続が拒否されているエラーを返します。ヒントやヒントは私にとって非常に役立つでしょう.thanksCのProxy Serverで転送GET要求

編集:私はここに関連するステップを詳述スタック別の回答を続けていた。基本的に私は

Open port 
Listen on port 
Get all request sent from the client to that port (maybe make the whole thing multithreaded to be able to handle more than 1 request at a time) 
Determine if it is a valid HTTP 1.0 request 
Extract the request components 
Rebuild the request according to what type of proxy you are 
Send the new request 
Get the response 
Send response to client 

「新しい要求部の送信/再構築」EDIT2までだ:1.1プロキシ

+0

移行先サーバーが停止している場合は、あまり機能しません。 getaddrinfo()は複数のaddrinfo構造体を返すかもしれませんが、すべてチェックしますか? – ldx

+0

正確に実装しているプロキシの種類は何ですか? HTTPプロキシ? SOCKSプロキシ? –

+0

これはHTTP 1.1プロキシです – UNA

答えて

0

HTTPプロキシにしなければならないすべてが実装されたHTTP、すなわち認識し、上の行動、 CONNECTコマンド。一度それが働いたら、それ以外のものはバイトを前後にコピーしているだけです。

関連する問題