0

ユーザーが接続しているドメイン (test.somesite.com など) をソケットから取得しようとしていますが、これは可能ですか? 私がこれを望む理由は、ユーザーの出身地に基づいてユーザーをリダイレクトするためです。別のスレッドで serverSocket.accept() を実行してソケットを取得します

私が試してみました:

clientSocket.getLocalAddress().getHostAddress();
clientSocket.getHostAddress().toString();

どちらも自分のローカル/内部 IP アドレスを出力するだけです。彼らがそこから来たドメインを取得するにはどうすればよいですか?

編集:たとえば、Apache Webサーバーでは、httpd.confファイルでこれを行うことができるため、これが可能になると思います:

<VirtualHost *:80>
  ServerName something.something.com
  ProxyPass               /       http://localhost:8080/
  ProxyPassReverse        /       http://localhost:8080/
</VirtualHost>

これはポート 80 でリッスンし、送信元の URL が something.something.com かどうかを確認し、そうであればポート 80 にリダイレクトします。コードを書き直さなければならない場合でも、ヒントがあれば教えてください。

編集 2: ターゲット アプリケーションが接続前にドメイン名を IP アドレスに解決するため、これは不可能であることがわかりました。助けてくれてありがとう

キール

4

2 に答える 2

1

これを試して:

clientSocket.getInetAddress().getHostName()

更新:または、これを試してください:

((InetSocketAddress)clientSocket.getRemoteSocketAddress()).getAddress().getHostName()
于 2013-04-21T16:41:40.713 に答える
0

DNS なしではドメインを取得できないと思いますが、clientSocket のgetRemoteSocketAddress()メソッドを使用してクライアントの IP アドレスを取得できます。

clientSocket.getRemoteSocketAddress();
于 2013-04-21T17:24:48.787 に答える