使用手机关闭电脑

最近有需要远程关闭电脑的需求,
其实关闭电脑也很简单,JAVA执行"shutdown -s -t 60"即可
自己瞎捣鼓一个。
就是通过一个手机给本地手机(跟电脑在连得同一个局域网)发短信
本地手机请求服务端,执行关机指令,关机~
因为也不好做外网访问,所以只能找一个手机做中介了。
没用到什么技术,就是一个读取短信,以及联网请求,服务器端处理参数,执行关机命令。

如果有哪位大大知道怎么可以外网访问本地tomcat,还请不吝赐教(家里可以通过路由器架设虚拟服务器实现,公司不好弄)。


服务端代码很简单啦~


protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {

String str = request.getHeader("shutdown");
if (str != null) {
if (str.equals("ok")) {
Runtime run = Runtime.getRuntime();
run.exec("shutdown -s -t 60");
}
}
}


客户端代码,需要接受第三方短信触发~

Class GetSingalMsg

package com.nico.remoteshutdown;

import com.nico.util.RequestShutDown;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
import android.util.Log;

public class GetSingalMsg extends BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent it) {
if (it.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
SmsMessage[] sms = getMessagesFromIntent(it);

SmsMessage s = sms[0];
if (s.getOriginatingAddress().equals("11223213123123")
&& s.getDisplayMessageBody().equals("关机")) {
RequestShutDown rsd = new RequestShutDown();
rsd.execute();
}
}
}

public final SmsMessage[] getMessagesFromIntent(Intent intent) {
Object[] messages = (Object[]) intent.getSerializableExtra("pdus");
byte[][] pduObjs = new byte[messages.length][];
for (int i = 0; i < messages.length; i++) {
pduObjs[i] = (byte[]) messages[i];
}
byte[][] pdus = new byte[pduObjs.length][];
int pduCount = pdus.length;
SmsMessage[] msgs = new SmsMessage[pduCount];
for (int i = 0; i < pduCount; i++) {
pdus[i] = pduObjs[i];
msgs[i] = SmsMessage.createFromPdu(pdus[i]);
}
return msgs;
}
}



RequestShutDown 请求任务


package com.nico.util;

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.os.AsyncTask;
import android.util.Log;

public class RequestShutDown extends AsyncTask<String, String, String> {

@Override
protected String doInBackground(String... str) {
URL u;
try {
u = new URL(
"http://localhost:8080/remoteshutdown/MainServlet");
try {
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
conn.setRequestProperty("shutdown", "ok");
conn.connect();

} catch (IOException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
finally
{
conn.disconnect();
}
return null;
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值