2017-03-16 4 views
1

ホストファイルを変更して、私が書いているローカルプロキシへの(例えばデータベースコール)のIPアドレスを変更しています。リダイレクトされたソケットオープン要求の意図するIPを決定するためのPOSIX呼び出しは何ですか?

10.1.2.3 localhost 
10.1.2.4 localhost 

ソケットオープン要求がどのマシンに向かうのかを調べるために、プロキシをソケットでリッスンしたいとします。例えば私のクライアントで私は呼び出しています。

dbPort = 4000; 
openDatabaseConnection("10.1.2.3", dbPort); 
... 
openDatabaseConnection("10.1.2.4", dbPort); 

したがって、両方とも同じソケットで呼び出されます。プロキシサーバが4000でリッスンし、10.1.2.3に向かうプロキシサーバを正しいサーバにリダイレクトしたい場合は、のIPアドレスを使用します。

ソケットヘッダーからこれを取得するためのPOSIX呼び出しがありますか?

私の質問は:リダイレクトされたソケットオープンリクエストの意図されたIPを決定するPOSIXコールとは何ですか?

答えて

0

いいえどのIPアドレスがクライアントプログラムで使用されたかを知る方法がありません。 hostsファイルはエイリアスのセットを定義し、エイリアスは実際のアドレス(あなたの場合はlocalhost)に名前/アドレスリゾルバによって置き換えられ、使用されるエイリアスに関するすべての情報が失われます。 "リダイレクト"は行われません。エイリアスの置換は、クライアントが接続する前に行われます。

問題を解決する最も簡単な方法は、hostsファイルでIPアドレスエイリアシングを使用するのではなく、別のポート番号を使用することです。

異なるアドレスに「仮想」インターフェイスを追加し、プロキシサーバーが両方のインターフェイスで接続をリッスンするようにすることもできます。

関連する問題