我的基于java的应用程序安装在许多用户的计算机上。在第一次运行时,它会自动将用户的操作系统名称发送到我的服务器并存储在数据库中。我使用System.getProperty("os.name");在该应用程序中获取用户的操作系统名称。能否确定这是一台基于服务器的计算机( Windows Server 2012 Standard)还是台式计算机(Ubuntu、Windows 7)?
是否有任何可能的方法来确定使用Java的服务器和台式计算机之间的关系?
发布于 2018-02-23 15:45:23
我在基于Java的web应用程序中使用
System.getProperty("os.name");来获取用户的操作系统名称。
这将为您提供运行web应用程序的服务器的操作系统名称,而不是用户的计算机。
您可以尝试从浏览器的User-Agent头中提取操作系统信息,但这本质上是一个容易出错的过程。此外,Microsoft Windows是唯一一个与您正在寻找的服务器/桌面有明确区别的操作系统;Linux和macOS没有这样的区别。
发布于 2018-02-23 18:06:57
是否有任何可能的方法来确定服务器和使用Java的台式计算机之间的关系?
(假设您可以获得相关计算机的"os.name“属性的值。)
答案是没有一种可靠的方法。
首先,服务器和台式计算机之间没有明显的区别。我可以安装Linux的无头服务器,只需安装几个包就可以将其转换为桌面Linux。操作系统不会改变,分布不会改变,"os.name“属性中的字符串也不会改变。
您能做的最好的事情就是在各种常见的 Java + OS平台上找出"os.name“字符串的通用模式。但这充其量也是脆弱的。
https://stackoverflow.com/questions/48943187
复制相似问题