在TCP服务器中获取服务器名称

时间:2015-06-14 10:42:38

标签: java sockets tcp hostname domain-name

是否可以获取TCP客户端使用的服务器地址?客户端可以使用IP地址或主机/域名访问服务器。

我正在尝试使用以下网址获取域名:

ServerSocket ss = new ServerSocket(port);
Socket s = ss.accept();
System.out.println(s.getLocalAddress().getHostName());
System.out.println(s.getLocalAddress().getCanonicalHostName());

但我得到的只是IP地址,总是!

在HTTP服务器中,我们可以使用httpServletRequest.getServerName()实现相同的目标。如果HTTP客户端使用IP地址,则返回IP地址;如果HTTP客户端使用域名,则返回域名。所以我很确定在TCP级别也应该可以。

2 个答案:

答案 0 :(得分:0)

如果您尝试将LocalHost作为服务器,它可能会带回名称,这可能是DNS问题;无论如何,请尝试localhost作为服务器,如果有效,请转到%SystemRoot%\system32\drivers\etc\hosts并定义您的主机名。

check this out.

希望这会有所帮助。

答案 1 :(得分:0)

如果我正确理解了您的问题,那么您正试图在服务器上找到 - 当服务器正在侦听多个IP地址时,'客户端'使用哪个IP地址连接到服务器。这是你的问题吗?在这种情况下,在getsockname() ed socket上执行accept应该会给你。