我有一个由服务器和客户端进程组成的程序。两者都运行在 Windows 系统上 - Windows 2000 或更高版本。这两个进程可以运行在同一台机器上,也可以运行在两台不同的机器上。
客户端如何判断是否与服务器运行在同一台机器上?如果服务器没有运行,客户端无论如何都无法工作,并且不关心服务器可能在哪里 - 所以这种情况是不可能的。我听说每台 Windows 计算机都有一个 UUID - 我可以获取它并用于此目的吗?
最佳答案
Windows 网络要求计算机名称是唯一的,因此调用 GetComputerName api 并让客户端和服务器交换名称(并将收到的名称与它们看到的名称进行比较)就足够了。如果客户端和服务器可以彼此独立启动,那么您将需要某种协议(protocol)来完成此过程。客户端发起交换,而服务器仅在从客户端接收到名称时才发送其名称,这似乎是合乎逻辑的。如果客户端看到相同的名称,则可以中止连接。
我相信大多数虚拟机系统都会允许虚拟机有自己的名称,因此您应该仍然可以在虚拟机上进行测试。然而,我对所有虚拟化技术都没有丰富的经验,所以不能肯定。
关于windows - 如何确定 Windows 计算机的身份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/896946/