【问题标题】:How to set Host Name in JAVA?如何在 JAVA 中设置主机名?
【发布时间】:2026-01-19 23:25:01
【问题描述】:

我正在尝试在本地网络上制作点对点聊天应用程序。我需要在列表中查找并列出在线用户的姓名。

我们都知道函数getHostName() 从 INetAddress 向我们返回主机名(DNS 名称)。在 Windows 中,它返回 PC 名称。但在 linux PC 和 android 手机中,它返回 IP 地址或随机 字母数字非用户友好字符串,如 android-xxxxxxxxxx(希望你能理解) .我的问题是我们如何设置默认主机名,以便getHostName()函数返回我们通过我们设置的用户友好名称申请?

【问题讨论】:

标签: java android


【解决方案1】:

设置主机名是一项管理任务 - 普通用户(和应用程序)无权执行此操作。

如您所见,Android 将主机名设置为一个随机值 - 它主要是为了在需要主机名的情况下实现网络兼容性,但该值并不是真正供人类使用的。

我不确定为什么您需要主机名。您似乎将其用作主机标识符 - 仅要求用户输入可用于识别目的的合理名称不是更容易吗?此外,如果每个 App 都决定尝试设置设备的主机名,您认为会发生什么?

您关于因为 DHCP 而没有使用 IP 地址的评论毫无意义。通过 IP 识别设备并简单地将它们映射到用户选择的标识符的共享列表似乎要容易得多,而不是尝试使用和解析主机名。

【讨论】:

    【解决方案2】:

    我认为您的客户除了本地网络之外不必共享任何东西,因为在 Windows 上有 arp -a 命令(更多关于 this 答案),我很确定有一个安卓等价物。它列出了局域网上的所有 IP 地址,因此您只需连接到每个 IP 地址,并询问用户定义的名称。如果客户端没有应答或端口未打开,则表示他们处于离线状态。

    【讨论】:

    • 谢谢,我会试一试的。