gpt4 book ai didi

java - 单例模式——服务器套接字

转载 作者:行者123 更新时间:2023-12-01 18:32:34 25 4
gpt4 key购买 nike

我正在使用此代码:

    final int LOCK_PORT= 54321;
ServerSocket ss = new ServerSocket(LOCK_PORT);

问题是,在同一个端口中,您无法收听 2 个不同的应用程序(教师理论)。

此代码已实现到应用程序中,并且同一实例运行了超过 1 次。目标是同一实例不应在同一端口运行超过 1 次。然而,这不起作用,但它确实运行......

//已编辑,更多代码...

public VentanaPropiedades() {
initFirst();
initComponents(); //graphic components of Matisse
}

private void initFirst() {
loadProperties(); //just internal values of the program, nothing to do

activateInstance();
}

private void activateInstance() throws Exception {
try {
final int LOCK_PORT= 54321;
ServerSocket ss = new ServerSocket(LOCK_PORT);
} catch (Exception e) {
System.out.println(e);
throw e;
}
}

private void killProgram() {
setVisible(false);
dispose();
System.exit(0);
}

private void validateInstance() {
try {
activateInstance();
} catch (Exception ex) {
killProgram();
}
}

--------------------------假设的解决方案-------------------- --------
当第二个实例未运行时捕获的错误是:

 java.net.BindException: Address already in use: JVM_Bind 

但是,此错误并不总是发生,您可以运行同一程序的多个实例。

最佳答案

这不起作用。当你第二次尝试创建时,你应该得到一个 BindException socket 。看看你是否不小心在某个地方捕获了它或者端口是否实际上不同或类似的东西。

关于java - 单例模式——服务器套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23488777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com