java TCP服务器未关闭电脑
我编写了一个Java TCP
服务器程序,从客户端关闭我的电脑。它正在成功接收来自客户端的消息,但没有关闭电脑
谁来帮我修一下这个
这是我的代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSideSocket {
private static ServerSocket serverSocket;
private static Socket clientSocket;
private static InputStreamReader inputStreamReader;
private static BufferedReader bufferedReader;
private static String message;
public static void main(String[] args) {
try {
serverSocket = new ServerSocket(4020); //Server socket
} catch (IOException e) {
System.out.println("Could not listen on port: 4020");
}
System.out.println("Server started. Listening to the port 4020");
while (true) {
try {
clientSocket = serverSocket.accept(); //accept the client connection
inputStreamReader = new InputStreamReader(clientSocket.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader); //get the client message
message = bufferedReader.readLine();
if(message=="shutdown"){
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("shutdown -s -t ");
System.exit(0);
}
else if(message=="restart"){
Runtime runtime1 = Runtime.getRuntime();
Process proc2 = runtime1.exec("shutdown -r -t ");
System.exit(0);
}
System.out.println(message);
inputStreamReader.close();
clientSocket.close();
} catch (IOException ex) {
System.out.println("Problem in message reading");
}
}
}
}
# 1 楼答案
编辑代码:
在上面的代码中,我更改了要执行的命令,在这里您需要指定关闭的时间,同时还需要像上面一样比较需要遵循的字符串
# 2 楼答案
尝试
sudo poweroff
并从进程中读取输出/错误,这样您就知道出了什么问题您还需要使用^{} 而不是
==
来比较字符串顺便说一句,如果您只想远程关机,您可以像这样使用SSH
这更安全,您不需要编写任何Java代码
# 3 楼答案
参数-t关机需要一个数字(等待关机/重启的秒数)