gpt4 book ai didi

java - 重启java服务器的main函数

转载 作者:行者123 更新时间:2023-12-02 12:05:46 26 4
gpt4 key购买 nike

我正在使用 Java 开发我的第一个服务器/客户端项目。它仍然非常基本,我能够在服务器和客户端程序之间交换一些数据。现在,一旦客户端终止连接,我就无法重新连接。

我来自 Visual Basic,其中我只有一个计时器和一个 boolean 值,检查连接是否已建立并最终重置套接字。

我在Java中尝试了类似的方法,设置一个Start方法和一个Restart方法,然后在循环中检查 boolean 值的状态。

不幸的是,Eclipse 不断向我显示无法对非静态字段进行静态引用的消息。现在我完全迷失了。

这是服务器的代码,一次可以正常工作,但无法重新启动。

package ComplexChatServer;

public class MainRoutine {
public Boolean boIsRunning;
public ConnectionHandlerS chsEins;
public Boolean boConnected = false;
public String strText;

public void StartRunning() {
boIsRunning = true;
chsEins = new ConnectionHandlerS();
chsEins.SocketListener();
}

public void ContinueRunning() {
boConnected = chsEins.getClientStatus();

if (boConnected == true) {
//System.out.println("Connected");
strText = null;
strText = chsEins.ReadInput();

if (strText != null && strText.isEmpty() == false) {
System.out.println("Loop");
System.out.println(strText);
strText = "";
boIsRunning = true;
}
else if (strText.equalsIgnoreCase("+++END+++")) {
boIsRunning = false;
System.exit(0);
}
}
else {
//System.out.println("Not connected");
}

}

public static void main (String [] args) {
int intRun;

while (true) {
if (boIsRunning = true) {
intRun = 1;
}
else {
intRun = 0;
}

switch (intRun) {
case 0:
StartRunning();
break;
case 1:
ContinueRunning();
break;
}
}
}
}

最佳答案

您不能对非静态成员进行静态调用。 Java中的静态成员是属于类本身的成员;不属于其对象。因此,您要么必须实例化 MainRoutine 对象并调用它的方法,要么将现有方法转换为静态方法,以便能够从已经静态的 main 方法中调用它们;取决于您想要实现的目标。

除此之外,传统上 Java 社区在命名方法和变量时使用驼峰式大小写。请检查以下语法和逻辑更正:

public static void main (String [] args) {
MainRoutine routine = new MainRoutine();

while(true) {
if(boIsRunning) {
routine.continueRunning();
} else {
routine.startRunning();
}
}
}

此外,正如 @Bill Horvath 在他的评论中所说,请注意,您实际上是在退出该进程,而不是重新启动它。

关于java - 重启java服务器的main函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46919810/

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