Привет!
Изучал я java, и подумал -(Сидишь такой в туалете с телефоном, а у тебя на пк кровь, убийства и голые сиськи открыты, вдруг приходит кто-то и говорит «Я за компьютером посижу чуток, ты же не против?») «а что если написать программу-сервер, которая выключала бы ПК, когда к этому к ней законектился пользователь». После этой мысли я узнал про такую штуку, как
runtime.getruntime().exec
И в общем я решил чего-то сделать:
/*программа ждет пока к порту 10000 кто-нибудь законектится, как только это произошло, начинается завершение сеанса*/
import java.io.IOException;
import java.net.ServerSocket;
public class Serv {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(10000);
serverSocket.accept();
Process shutdown = Runtime.getRuntime().exec(new String[]{"shutdown", "-s" });
serverSocket.close();
}
}
Это был самый простейший вариант.
За ним сразу последовала улучшенная версия(с отправкой html присоединившемуся клиенту):
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Serv {
public static void main(String[] args) throws IOException
{
int sPort = 9000;
ServerSocket socket = new ServerSocket(sPort);
Socket ss = socket.accept();//Ждём пока кто-нибудь подключится
System.out.println("CONNECTED");
OutputStream sout = ss.getOutputStream();
String html = "<html><head><title>Shutdown</title></head><body><h1>Компьютер выключится через 15-20 секунд!</h1><br/><img src = 'http://s.elitarium.ru/wp-content/uploads/1632841882.jpg'></br><h2>Ему нужно отдыхать :)</h2></body></html>";//html
//Я не мог не добавить картинку котика (^=◕ᴥ◕=^)
String header = "HTTP/1.1 200 OKnContent-type: text/htmlnContent-Length: " + html.length() + "nConnection: closenn";//html header
String outputText = header + html;
sout.write(outputText.getBytes());
String[] cm = { "shutdown", "-s" };
Runtime.getRuntime().exec(cm);
ss.close();
socket.close();
}
}
Программу сделали.
После её запуска ничего особенного не произойдет, но теперь если вы подключитесь к порту 9000 вашего компьютера(у меня это 192.186.1.2:9000) на любом другом устройстве подключенном к тому же wi-fi — ваш компьютер начнет завершение работы.
После этого можно добавить её в автозапуск и спокойно пользоваться в пределах wi-fi…
Но я решил еще немного поднажать, и сделать доступ к девятитысячному порту с любой точки мира (но это не точно):
Открываем настройки роутера, находим там что-то похожее того, что на пикче и вписываем туда ваши данные:
Затем узнаем внешний ip (2ip.ru в помощь), и подключаемся к нему через указанный в настройках порт(xxx.xxx.xxx.xxx:15 например).
P.S.: Так как внутренний айпи компьютера может меняться(в зависимости от количества подключенных к wi-fi устройств), можно создать маппинг сразу для несколько внутренних адресов(192.168.1.2, 192.168.1.3, 192.168.1.4 например).
Вот собственно и всё.
P.P.S.: Если кому нужна данная программа -> google.drive
Автор: Dmitry