java - 如果我在不同的网络/域中,是否可以使用计算机名称而不是 IP?
问题描述
我有一个计算机名称列表,我必须创建一个相应 IP 地址的列表。以这样的方式完成:
Iterator<String> iter = listWithComputerNames.iterator();
while (iter.hasNext()) {
String curName = iter.next();
String ipAdress = "";
try {
InetAddress address = InetAddress.getByName(curName );
ipAdress = address.getHostAddress();
}
}
如果我在与所有其他计算机相同的域中运行程序,则此方法有效。但是,我想在服务器上以批处理作业的形式运行它,该服务器位于不同的域中(但仍然是同一个本地网络!)。
由于两个域都在一个公司内,并且计算机可以使用 IP 相互通信,我想知道是否有可能明确告诉我的计算机名称来自不同的域:类似于 name.domain.local,这样它就可以即使从不同的域解析为 IP。有谁知道诀窍?
解决方案
InetAddress giriAddress = java.net.InetAddress.getByName("com.named.domain");
然后,如果您希望 IP 作为字符串
String address = giriAddress.getHostAddress();
您可以在本地环境中使用它来更新某种数据库,如果服务器想要 IP 地址,则可以访问该数据库,或者甚至更好地将其公开为 Web 服务
推荐阅读
- microservices - 我可以在我的组织中拥有一个 Gitlab 管道模板吗?
- c# - C# ListView 排序方法不能正确排序数字数据
- javascript - 如何在javascript中随机排序数组?
- javascript - 如果在 ES6 中的字符串中包含,则返回 True
- oracle - 从两个圆形几何图形创建带有孔的多边形作为 Oracle SDO_GEOMETRY
- cryptography - Vigenere 密码-密码分析攻击
- dynamics-crm - ActivityPointer 和 activitytypecode 全局选项集之间的 Dynamics 365 API 链接
- mysql - Sequelize Raw Query 返回 TextRows 数组
- node.js - Angular 发布请求被拒绝,但 nodejs 发布请求有效
- javascript - 仅当播放的时间线完成时,如何退出 Phaser3 中的方法?