我在Swing中创建了应用程序,我想只运行它的一个实例。我写了这样的话:
private static final int PORT = 12345;
{
try {
new ServerSocket(PORT, 10, InetAddress.getLocalHost());
} catch (UnknownHostException e) {
// shouldn't happen for localhost
} catch (IOException e) {
// port taken, so app is already running
System.out.println("Application already exist");
System.exit(0);
}
}
它适用但仅适用于所有系统。因此,如果一个用户运行它,另一个用户不能同时使用它。所以我希望每个用户只能运行这个应用程序的一个实例。你知道我怎么做到的?
答案 0 :(得分:3)
对于每个用户,将端口号存储为首选项。首选项将与用户帐户相关联。用户第一次运行应用程序时,首选项将不存在 - 随机生成端口号并将其存储给该用户。每次之后,当用户启动应用程序时,请阅读其端口首选项。
由于每个用户都使用不同的端口,因此每个用户实例不会相互干扰 - 但每个用户将仅限于一个实例。