我的问题有点基本,但它让我好奇一段时间:
使用Java Socket时,使用服务器名称而不是IP地址吗?
例如,如果我是某个服务器的管理员,其地址为“bogusserver.com”,并在使用“new Socket”(“bogusserver.com”)打开套接字时使用此地址而不是服务器的实际IP ,8080);'它会实际正常打开插座吗?
如果是,那么Socket类究竟是如何解决地址的呢?它是否使用在运行代码的计算机上注册的DNS服务器?
我知道使用“localhost”地址Socket会正常打开,但是,一切都适用于localhost:P
答案 0 :(得分:3)
你只需要阅读javadoc。使用InetAddress的Socket is constructed。
主机名到IP地址解析是通过使用本地计算机配置信息和网络命名服务(如域名系统(DNS)和网络信息服务(NIS))的组合来完成的。默认情况下,正在使用的特定命名服务是本地计算机配置的一个。对于任何主机名,将返回其对应的IP地址。
答案 1 :(得分:2)
使用Java Socket时,使用服务器名称而不是IP地址吗?
操作系统可能会使用DNS将主机名转换为IP地址。使用TCP,UDP或ICMP并不重要。
如果是,那么Socket类究竟是如何解决地址的呢?
它将它传递给操作系统进行查找。
它是否使用在运行代码的计算机上注册的DNS服务器?
操作系统已注册DNS服务器,如果该主机名没有hosts
条目,则可以联系他们。