我的Android进阶之旅------>Android实现用Android手机控制PC端的关机和重启的功能(一)PC服务器端

简介: 因为经常开着笔记本工作,累了就坐床上玩手机,但晚上要睡觉了又不想下床去关电脑,就想做个Android软件来控制PC端的关机和重启。要想实现此功能,就得让Android手机和PC之间进行通信才能,因此采用Socket编程来实现。

因为经常开着笔记本工作,累了就坐床上玩手机,但晚上要睡觉了又不想下床去关电脑,就想做个Android软件来控制PC端的关机和重启。要想实现此功能,就得让Android手机和PC之间进行通信才能,因此采用Socket编程来实现。

 ==================================Shutdown命令的用法========================================

  首先得了解一下关于Shutdown命令的用法。

选择win+R,打开命令行窗口,输入shutdown /?   按Enter回车键,

即可以查看一些shutdown的用法:

shutdown   -l      注销。这不能与 /m 或 /d 选项一起使用。

shutdown   -s      关闭计算机。

shutdown   -r      完全关闭并重新启动计算机。

shutdown   -a      中止系统关闭。

shutdown   -p      关闭本地计算机,没有超时或警告。

shutdown   -h      休眠本地计算机。

shutdown   -t xxx  将关闭前的超时时间设置为 xxx 秒。     

shutdown   -c "comment" 有关重新启动或关闭的原因的注释。

shutdown   -f      强制关闭正在运行的应用程序而不事先警告用户。

shutdown   -d [p|u:]xx:yy  提供重新启动或关闭的原因。


下面介绍一些shutdown的一个最常用的功能,即定时关机、重启和取消关机。


定时关机,即shutdown -s -t "这里填时间" 如:shutdown -s -t 60 

这里时间是按秒来算的,即是一分钟之后关机。



定时关机并重启,即shutdown -r -t "这里填时间" 如:shutdown -r -t 60 

这里时间是按秒来算的,即是一分钟之后关机r然后重启。



我们可以使用shutdown -a来取消定时关机的任务,不过要在关机的前一秒



================================PC服务器端的实现===========================================

PC端的服务器代码很简单,就是监听端口30000,然后获取Android发过来的指令,使用Runtime.getRuntime().exec(String command)方法来执行上面介绍的Shutdown命令,来实现控制PC端的关机、重启或者取消关机的功能。

端口号必须是空闲的才行,端口号的范围从0到65535,像网络端口80,FTP端口21,mysql默认端口3306,我用的30000端口,一般不会被占用。

代码如下:

package com.oyp.shutdown;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ShutDownServer {

	static ServerSocket serverSocket = null;// 服务socket
	static DataInputStream dataInput = null;// 输入流
	static DataOutputStream dataOutput = null;// 输出流

	public static void main(String[] args) {
		try {
			// 监听30000端口
			serverSocket = new ServerSocket(30000);
			System.out.println("ShutDownServer is listening  port 30000............");

			while (true) {
				// 获取客户端套接字
				Socket clientSocket = serverSocket.accept();
				String send_msg = "";
				try {
					// 获取输入流,读取客户端传来的数据
					dataInput = new DataInputStream(
							clientSocket.getInputStream());
					String msg = dataInput.readUTF();
					System.out.println(msg);
					// 判断输入,进行相应的操作
					dataOutput = new DataOutputStream(
							clientSocket.getOutputStream());
					if ("shutdown".equals(msg)) {
						shutdown();
						// 发送消息回Android端
						send_msg = "60秒后关机 ";
					} else if ("reboot".equals(msg)) {
						reboot();
						send_msg = "60秒后重启";
					} else if ("cancel".equals(msg)) {
						cancel();
						send_msg = "取消关机或重启";
					}
				} catch (Exception e) {
				} finally {
					try {
						if (dataOutput != null) {
							dataOutput.writeUTF(send_msg);
							dataOutput.close();
						}
						dataInput.close();
						// 关闭连接
						clientSocket.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 关机
	private static void shutdown() throws IOException {
		Runtime.getRuntime().exec("shutdown -s -t 60");
		System.out.println("shutdown ,60 seconds later ");
	}

	// 重启
	private static void reboot() throws IOException {
		Runtime.getRuntime().exec("shutdown -r -t 60");
		System.out.println("reboot ,60 seconds later ");
	}

	// 取消关机或重启
	private static void cancel() throws IOException {
		Runtime.getRuntime().exec("shutdown -a");
		System.out.println("cancel shutdown or restart");
	}

}

运行后,效果如下:

1、一直在监听端口30000

2、当Android客户端发送关机请求后



3、当Android客户端发送取消关机请求后


4、当Android客户端发送重启请求后




 


                            ====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址http://blog.csdn.net/ouyang_peng

====================================================================================

 


相关文章
|
21天前
|
安全 Linux 调度
在Linux中,如何实现,每星期天早8点服务器定时重启?
在Linux中,如何实现,每星期天早8点服务器定时重启?
|
2月前
|
存储 弹性计算 Linux
云服务器 ECS产品使用问题之如何实现计划任务定时备份和重启
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
2月前
|
存储 弹性计算 Linux
云服务器 ECS产品使用问题之重启linux服务器pal-server是否会自动重启
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
3月前
|
NoSQL 关系型数据库 MySQL
linux服务器重启php,nginx,redis,mysql命令
linux服务器重启php,nginx,redis,mysql命令
54 1
|
2月前
|
敏捷开发 存储 持续交付
阿里云云效产品使用合集之流水线在服务器重启后无法发布代码,一般是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
Web App开发
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
|
2月前
|
前端开发 Linux 网络安全
旧手机闲置?教你用Termux搭建个移动服务器
旧手机闲置?教你用Termux搭建个移动服务器
82 0
|
4月前
|
存储 关系型数据库 MySQL
服务器数据恢复—EVA存储异常断电重启后虚拟机无法启动的数据恢复方案
服务器存储数据恢复环境: 某品牌EVA8400,服务器上安装VMware ESXi虚拟化平台,虚拟机的虚拟磁盘包括数据盘(精简模式)+快照数据盘,部分虚拟机中运行oracle数据库和mysql数据库。 服务器存储故障&检测: 存储异常断电重启后,存储中一台虚拟机无法启动。工作人员推测故障原因是异常断电导致电源模块出现故障,清空cache后重新启动存储发现该虚拟机仍无法正常启动。
|
3月前
|
存储 算法 Java
Android 进阶——代码插桩必知必会&ASM7字节码操作
Android 进阶——代码插桩必知必会&ASM7字节码操作
159 0
|
3月前
|
前端开发 Java API
Android端通过HttpURLConnection上传文件到服务器
Android端通过HttpURLConnection上传文件到服务器
37 0

热门文章

最新文章