是否可以获取TCP客户端使用的服务器地址?客户端可以使用IP地址或主机/域名访问服务器。
我正在尝试使用以下命令获取域名:
ServerSocket ss = new ServerSocket(port);
Socket s = ss.accept();
System.out.println(s.getLocalAddress().getHostName());
System.out.println(s.getLocalAddress().getCanonicalHostName());但我得到的总是IP地址!
在超文本传输协议服务器中,我们可以使用httpServletRequest.getServerName()来实现相同的功能。如果HTTP客户端使用IP地址,则返回IP地址;如果HTTP客户端使用域名,则返回域名。所以我很确定这在TCP级别也是可能的。
发布于 2015-06-14 18:56:25
如果您尝试将LocalHost作为服务器,它可能会返回名称,但这可能是DNS问题;无论如何,尝试将您的localhost作为服务器,如果它工作,转到%SystemRoot%\system32\drivers\etc\hosts并定义您的主机名。
check this out.
希望这能有所帮助。
发布于 2015-06-14 21:11:34
如果我没理解错的话,你是想在服务器上找出--当服务器在监听多个IP地址时,哪个IP地址被“客户端”用来连接到服务器。这是你的问题吗?在这种情况下,在accepted套接字上执行getsockname()应该会得到以下结果。
https://stackoverflow.com/questions/30828417
复制相似问题