-
Java如何获得局域网内其他机器的主机名hostname?谢谢回答!10
我用java的如下方法:
InetAddress add= InetAddress.getByName(ip);
String hostname=add.getHostName();
可以得到同网段的其他主机的主机名(比如我的ip是:10.167.10.2,别人的ip是10.167.10.5)。
但是其他网段的主机名得不到,得到的hostname是ip地址
(比如我的ip是:10.167.10.2,别人的ip是10.167.13.5)。
而我用C#的DNS类的Dns.GetHostByAddress()可以正确得到其他网段的主机名。
这是为什么呢?是JAVA的BUG吗?
java如何实现获得其他网段的主机名呢?谢谢!!!2011年12月27日 21:35
1个答案 按时间排序 按投票排序
-
这个可能谈不上是BUG
因为Java为了不同平台的兼容性,有很多东西都扔给平台来做了。
比如说File类,就不能设置属性,而C#等一些就可以。
象这样的问题只能通过解析平台执行命令的结果来取得。
InputStreamReader insr = null;
BufferedReader br = null;
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(" cmd /c ping -a " + ip);
try {
Thread.sleep(300);
} catch (Exception e) {
}
insr = new InputStreamReader(process.getInputStream());
br = new BufferedReader(insr);
while (br.ready()) {
String str = br.readLine();
System.out.println(str);
}
这样,能过解析str里的内容,取得你想要的内容。2011年12月28日 08:35
相关推荐
在Java编程中,获取服务器性能信息以及局域网内的主机名是常见的需求,这有助于监控系统状态、优化资源分配和排查故障。以下是如何通过纯Java代码实现这些功能的详细步骤。 首先,我们可以利用Java内置的`java.lang...
总的来说,理解并掌握如何在Java中获取本地主机的域名和主机名是网络编程的基础技能,对于开发涉及网络通信的Java应用程序至关重要。通过熟练运用`InetAddress`类提供的方法,开发者可以方便地获取和处理网络相关的...
然而,在日常操作中,我们更习惯于使用计算机的主机名(Machine Name)来标识一台设备,因为主机名更加直观易记。当需要进行网络通信时,将机器名转换为IP地址就显得尤为重要。本篇将深入探讨如何通过机器名获取IP...
例如,IP地址范围是**.**.***.**至**.**.***.**,并为每台机器设置相应的主机名(hostname),如master、slave1和slave2。这涉及到在Linux系统中的网络配置文件如`/etc/sysconfig/network-scripts/ifcfg-ens33`(或...
在Java中,可以调用`org.hyperic.sigar.Sigar.getHostname()`方法来获取当前系统的主机名。例如: ```java import org.hyperic.sigar.Sigar; public class AgentInfo { public static void main(String[] args) {...
描述中提到的“获取网络上的主机名与IP地址”,可能是指在本地网络环境中,例如局域网内的设备互相识别。在这种情况下,可以使用`nmap`工具进行扫描,或者通过API如`netifaces`(Python)获取本地网络接口的IP地址。...
- `getHost()`:获取主机名。 - `getPort()`:获取端口号,如果未设置则返回-1。 - `getFile()`:获取文件名。 - `getRef()`:获取引用。 - `getQuery()`:获取查询字符串。 - **打开URL连接**: ```java ...
你可以检查InetAddress对象是否表示一个有效的主机,或者获取其主机名、主机地址等信息。例如: ```java if (inetAddress.isReachable(500)) { // 检查是否可达,500毫秒超时 System.out.println("IP: " + ...
在这个例子中,"hostname"是目标机器的IP地址或主机名,"sharename"是共享文件夹的名称,"username"和"password"用于身份验证。连接成功后,你可以进一步操作SmbFile对象,比如打开文件进行读写: ```java ...
修改当前会话中的主机名,执行命令hostname hadoop,验证:hostname。修改配置文件中的主机名,执行命令vi /etc/sysconfig/network。 2.3 主机名和IP绑定 执行命令vi /etc/hosts,增加192.168.245.100 hadoop。...
# 修改配置允许局域网内机器与该服务器进行时间同步 restrict default nomodify notrap noquery # 设置上级时间服务器 server 0.cn.pool.ntp.org iburst ``` #### 三、使用 Yum 本地源部署 Cloudera Impala ...
首先,计算机名称是标识一台计算机在网络上的唯一标识符,通常在Windows系统中表现为“计算机名”或“主机名”。它用于在局域网内识别和访问设备。获取计算机名称的方法多种多样,可以通过命令行工具(如Windows的`...
- 在每个节点上编辑`/etc/hostname`文件,设置相应的主机名。 **2. 主机名解析** - 编辑`/etc/hosts`文件,添加所有节点的IP地址和主机名映射记录。 **3. SSH无密码登录** - 使用SSH密钥对实现Master节点与各...
1. 设置主机名:hostname zn。 2. 编辑/etc/sysconfig/network文件,添加hostname=zn。 3. 重启虚拟机。 4. ip与hostname绑定:vi /etc/hosts,添加ip地址和主机名的对应关系。 四、SSH免密码登陆 1. 创建公钥:...
- 使用`hostname hadoop1`和`exit`命令来更新主机名。 5. **SSH无密码登录配置**: - 在Master节点上生成SSH密钥对,`ssh-keygen`,然后将公钥(默认在~/.ssh/id_rsa.pub)复制到所有Slave节点的`~/.ssh/...
更新`/etc/hostname`文件并编辑`/etc/hosts`文件,列出所有节点的IP和主机名映射,避免IP冲突。 6. **验证网络**:通过`ping`命令测试各节点间的通信,确保网络通畅。 7. **SSH无密码登录**:在Master节点上生成...
2. **修改当前机器名称**:如果需要修改主机名,可以通过编辑`/etc/sysconfig/network`文件来实现。找到`HOSTNAME`行,并将其修改为我们规划好的名称,如`Master.Hadoop`。 #### 二、SSH无密码验证配置 **2.1 安装...
- **网络配置**: 配置所有节点处于同一局域网内,并确保每台机器的IP地址不冲突,以避免网络通讯错误。此外,还需要设置好DNS解析,使各个节点可以通过主机名互相访问。 #### 二、JDK安装 - 在所有节点上安装Java...
如果主机名不正确,可以通过修改"/etc/sysconfig/network"文件中的"HOSTNAME"来更改。同样,其他Slave节点也需要按照这个模板进行调整。 【Hadoop安装配置步骤】 安装Hadoop通常涉及以下步骤: 1. 安装Java开发...
如果机器的主机名与规划的不一致,可以通过编辑`/etc/sysconfig/network`文件中的`HOSTNAME`参数来进行修改。 - **编辑文件**:使用`vim /etc/sysconfig/network`命令编辑文件。 - **修改主机名**:找到`HOSTNAME`...