我正在尝试获取用户从Socket连接到的域(例如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,则可能是完全错误的,因为我不熟悉Java网络,但是请允许我知道您是否有任何提示,即使我必须重写我的代码也可以。
编辑2:我发现这是不可能的,因为目标应用程序会在连接之前将域名解析为IP地址。谢谢你的帮助
基尔
最佳答案
尝试这个:
clientSocket.getInetAddress().getHostName()
更新:或者,尝试以下操作:
((InetSocketAddress)clientSocket.getRemoteSocketAddress()).getAddress().getHostName()