如何在 JAVA 中设置主机名?
Posted
技术标签:
【中文标题】如何在 JAVA 中设置主机名?【英文标题】:How to set Host Name in JAVA? 【发布时间】:2015-11-08 17:28:19 【问题描述】:我正在尝试在本地网络上制作点对点聊天应用程序。我需要在列表中查找并列出在线用户的姓名。
我们都知道函数getHostName()
从 INetAddress 向我们返回主机名(DNS 名称)。在 Windows 中,它返回 PC 名称。但在 linux PC 和 android 手机中,它返回 IP 地址或随机 字母数字非用户友好字符串,如 android-xxxxxxxxxx(希望你能理解) .我的问题是我们如何设置默认主机名,以便getHostName()
函数返回我们通过我们设置的用户友好名称申请?
【问题讨论】:
您要解决什么问题需要更改计算机的主机名? 我正在尝试在本地网络上制作聊天应用程序。我需要在列表中查找并列出在线用户的姓名。 @乔尼 你或许可以试试谷歌搜索。第一个结果:forums.androidcentral.com/virgin-mobile-optimus-v/… 第二个:invialgo.com/2012/change-android-hostname 第三个:play.google.com/store/apps/… 第四个:android.stackexchange.com/questions/37/… @Nabin 您可以列出网络上的每台设备并询问每个客户端(我猜是某种形式的 TCP/IP 连接)用户设置的名称,并向用户显示回复 @19greg96 我在之前的迭代中做了这两个。但我认为共享 IP 地址是不切实际的,因为现代路由器中设置了 DHCP。 【参考方案1】:设置主机名是一项管理任务 - 普通用户(和应用程序)无权执行此操作。
如您所见,Android 将主机名设置为一个随机值 - 它主要是为了在需要主机名的情况下实现网络兼容性,但该值并不是真正供人类使用的。
我不确定为什么您需要主机名。您似乎将其用作主机标识符 - 仅要求用户输入可用于识别目的的合理名称不是更容易吗?此外,如果每个 App 都决定尝试设置设备的主机名,您认为会发生什么?
您关于因为 DHCP 而没有使用 IP 地址的评论毫无意义。通过 IP 识别设备并简单地将它们映射到用户选择的标识符的共享列表似乎要容易得多,而不是尝试使用和解析主机名。
【讨论】:
【参考方案2】:我认为您的客户除了本地网络之外不必共享任何东西,因为在 Windows 上有 arp -a
命令(更多关于 this 答案),我很确定有一个安卓等价物。它列出了局域网上的所有 IP 地址,因此您只需连接到每个 IP 地址,并询问用户定义的名称。如果客户端没有应答或端口未打开,则表示他们处于离线状态。
【讨论】:
谢谢,我会试一试的。以上是关于如何在 JAVA 中设置主机名?的主要内容,如果未能解决你的问题,请参考以下文章