是否可以获取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级别也应该可以。
答案 0 :(得分:0)
如果您尝试将LocalHost
作为服务器,它可能会带回名称,这可能是DNS问题;无论如何,请尝试localhost
作为服务器,如果有效,请转到%SystemRoot%\system32\drivers\etc\hosts
并定义您的主机名。
答案 1 :(得分:0)
如果我正确理解了您的问题,那么您正试图在服务器上找到 - 当服务器正在侦听多个IP地址时,'客户端'使用哪个IP地址连接到服务器。这是你的问题吗?在这种情况下,在getsockname()
ed socket上执行accept
应该会给你。