私は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プロキシ
移行先サーバーが停止している場合は、あまり機能しません。 getaddrinfo()は複数のaddrinfo構造体を返すかもしれませんが、すべてチェックしますか? – ldx
正確に実装しているプロキシの種類は何ですか? HTTPプロキシ? SOCKSプロキシ? –
これはHTTP 1.1プロキシです – UNA