[置顶] 手机通过socket控制电脑关机,重启,注销等功能
服务端
package com.pc;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.LineNumberReader;
public class Server extends Thread {
private ServerSocket server = null;
private static final int PORT = 20000;
private BufferedWriter writer;
private BufferedReader reader;
private Server() throws IOException {
CreateSocket();
// 创建Socket服务器
}
public void run() {
Socket client;
String txt;
try {
while (true)
// 线程无限循环,实时监听socket端口
{
client = ResponseSocket();
// 响应客户端链接请求。。
while (true) {
txt = ReceiveMsg(client);
// 链接获得客户端发来的命令
System.out.println(txt);
if (txt != null) {
// 执行命令
txt = exceCommand(txt);
}
SendMsg(client, txt);
// 向客户端返回消息
// 中断,关闭此次连接
break;
}
CloseSocket(client);
}
} catch (IOException e) {
System.out.println(e);
}
}
private void CreateSocket() throws IOException {
server = new ServerSocket(PORT);
System.out.println("Server starting..");
}
private Socket ResponseSocket() throws IOException {
Socket client = server.accept();
System.out.println("client connected..");
return client;
}
private void CloseSocket(Socket socket) throws IOException {
reader.close();
writer.close();
socket.close();
System.out.println("client closed..");
}
private void SendMsg(Socket socket, String Msg) throws IOException {
writer = new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream()));
writer.write(Msg + "\n");
writer.flush();
}
private String ReceiveMsg(Socket socket) throws IOException {
reader = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
System.out.println("server get input from client socket..");
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
return line;
}
return line;
}
private String exceCommand(String command) {
String msg = "";
try {
Process process = Runtime.getRuntime().exec(command);
InputStreamReader ir = new InputStreamReader(
process.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
while ((line = input.readLine()) != null) {
System.out.println(line);
msg += line + "\n";
}
} catch (java.io.IOException e) {
System.err.println("IOException " + e.getMessage());
}
return msg;
}
public static void main(final String args[]) throws IOException {
Server commandServer = new Server();
if (commandServer != null) {
commandServer.start();
}
}
}
客户端
package com.android.pc;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button wifi1,baocun,guanji,chongqi,zhuxiao,quxiao,tuichu;
private EditText edit;
private Socket socket;
public static boolean wifi;
public static final int CONNENTED = 0;
public static final int UPDATALOG = 1;
// private TextView log;
private String ip="192.168.2.102";
private String logMsg;
private BufferedWriter writer;
private InetSocketAddress isa = null;
Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
findviews();
setonclick();
}
public void findviews() {
guanji=(Button)this.findViewById(R.id.guanji);
chongqi=(Button)this.findViewById(R.id.chongqi);
zhuxiao=(Button)this.findViewById(R.id.zhuxiao);
quxiao=(Button)this.findViewById(R.id.quxiao);
tuichu=(Button)this.findViewById(R.id.tuichu);
wifi1=(Button)this.findViewById(R.id.wifi);
edit=(EditText)this.findViewById(R.id.edit);
baocun=(Button)this.findViewById(R.id.baocun);
}
private void setonclick() {
guanji.setOnClickListener(new OnClickListener1());
chongqi.setOnClickListener(new OnClickListener2());
zhuxiao.setOnClickListener(new OnClickListener3());
quxiao.setOnClickListener(new OnClickListener4());
tuichu.setOnClickListener(new OnClickListener5());
wifi1.setOnClickListener(new OnClickListener6());
baocun.setOnClickListener(new OnClickListener7());
}
private class OnClickListener1 implements OnClickListener{
@Override
public void onClick(View v) {
String str1="shutdown -s";
tcpClient tcp = new tcpClient(str1.toString());
tcp.start();
}
}
class OnClickListener7 implements OnClickListener{
@Override
public void onClick(View v) {
ip=edit.getText().toString();
}
}
private class OnClickListener2 implements OnClickListener{
@Override
public void onClick(View v) {
String str2="shutdown -r";
tcpClient tcp = new tcpClient(str2.toString());
tcp.start();
}
}
private class OnClickListener3 implements OnClickListener{
@Override
public void onClick(View v) {
String str3="shutdown -l";
tcpClient tcp = new tcpClient(str3.toString());
tcp.start();
}
}
private class OnClickListener4 implements OnClickListener{
@Override
public void onClick(View v) {
String str3="shutdown -a";
tcpClient tcp = new tcpClient(str3.toString());
tcp.start();
}
}
private class OnClickListener5 implements OnClickListener{
@Override
public void onClick(View v) {
MainActivity.this.finish();
}
} private class OnClickListener6 implements OnClickListener{
@Override
public void onClick(View v) {
if(!wifi){
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setTitle("提示");
builder.setMessage("WIFI没有打开");
WifiManager w =(WifiManager)MainActivity. this.getSystemService(Service.WIFI_SERVICE);
w.setWifiEnabled(true);
Toast toast = Toast.makeText(MainActivity.this, "正在打开,请等待", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("PC ");
builder.setMessage("是否退出 ?");
builder.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
}
return super.onKeyDown(keyCode, event);
}
public void connecttoserver() throws UnknownHostException, IOException {
socket = RequestSocket(ip, 20000);
if (socket.isConnected()) {
Message msg = new Message();
msg.what = CONNENTED;
mHandler.sendMessage(msg);
}
}
private Socket RequestSocket(String host, int port)
throws UnknownHostException, IOException {
Socket ConSocket = new Socket();
isa = new InetSocketAddress(host, port);
ConSocket.connect(isa);
return ConSocket;
}
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case CONNENTED:
break;
case UPDATALOG:
break;
}
}
};
private void SendMsg(Socket socket, String msg) throws IOException {
writer = new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream()));
Log.i("msg", msg.replace("\n", " ") + "\n");
writer.write(msg.replace("\n", " ") + "\n");
writer.flush();
}
private String ReceiveMsg(Socket socket) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String line;
String txt = "";
while ((line = reader.readLine()) != null) {
txt += line + "\n";
}
reader.close();
return txt;
}
class tcpClient extends Thread {
String commandString;
public tcpClient(String command) {
commandString = command;
}
public void run() {
String recv;
try {
connecttoserver();
SendMsg(socket, commandString);
recv = ReceiveMsg(socket);
if (recv != null) {
logMsg += recv;
// close BufferedWriter and socket
writer.close();
socket.close();
// updata to log
Message msg = new Message();
msg.what = UPDATALOG;
mHandler.sendMessage(msg);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
activity_main.xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/wifi"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="连接无线"/>
<EditText
android:id="@+id/edit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="输入IP"/>
<Button
android:id="@+id/baocun"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="连接到PC"/>
<Button
android:id="@+id/guanji"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="@dimen/padding_medium"
android:text="关机" />
<Button
android:id="@+id/chongqi"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="@dimen/padding_medium"
android:text="重启" />
<Button
android:id="@+id/zhuxiao"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="@dimen/padding_medium"
android:text="注销" />
<Button
android:id="@+id/quxiao"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="@dimen/padding_medium"
android:text="取消关机" />
<Button
android:id="@+id/tuichu"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="@dimen/padding_medium"
android:text="退出程序" />
</LinearLayout>
[置顶] 手机通过socket控制电脑关机,重启,注销等功能相关推荐
- php控制电脑关机,window_Windows7系统语音识别功能控制电脑操作,记得若干年前非常真实的一幕 - phpStudy...
记得若干年前非常真实的一幕,一位兄弟在宿舍津津有味玩着游戏,一舍友突然学他的方言口音大吼一声:鹅要关机!! 结果,Windows听话的关机了-- 其实,在很多科幻片中都有相同的一幕,主人公使用的电脑没 ...
- html控制电脑关机,用手机控制电脑关机 方法介绍【图文】
有时候当你忙完一切上 床 准备睡觉时,却忽然发现远在 客厅 的电脑没有关机,此时你就会很烦,可你又不得不跑出去把电脑关了.如果你能够通过手机远程控制电脑关机,那就可以解决问题了.打开手机,把电脑关了就 ...
- 如何用手机语音助手控制电脑
如何用手机语音助手控制电脑 软件介绍 神秘鸭是一款开源免费的可以让你通过手机语音助手来远程控制电脑的软件 .它支持通过小米的小爱同学 .苹果的Siri .华为的小艺 .vivo的小V 等多款语音助手来 ...
- 使用小爱同学语音控制电脑关机 - Winform C#
使用小爱同学语音控制电脑变关机 前言 实现原理 准备 注册巴法云账号 接入巴法云 接入米家 编写程序 连接TCP 接收信息并运行关机指令 发送指令订阅主题 添加心跳机制 后台运行 阻止默认关闭窗口事件 ...
- LabVIEW控制电脑关机、休眠、注销和重启
在LabVIEW跳转访问网页博文中,我们使用执行系统命令的方式执行Windows CMD指令实现网页访问,本篇博文在此技术上拓展讲解几个有意思的功能,实现控制电脑关机.休眠锁屏和远程唤醒. 还是在La ...
- csgo怎么控制电脑玩家_手机怎么去控制电脑,专治孩子玩游戏
大家好,欢迎收看妙招姐说妙招!今天教大家如何用我们的手机控制家里的电脑,一起来看看吧 可以看到我的手机现在正在控制电脑,不管多远都可以控制,这样家里的小孩玩电脑,哪怕大人不在家都可以远程控制电脑,下面 ...
- 查询电脑关机/重启记录
查询电脑关机/重启记录 直接百度搜索给出的步骤: 方法/步骤: 1.桌面我的电脑 右键 选择管理 2.打开计算机管理 依次选择事件查看器-windows日志-系统 3.我们下拉系统记录 就可以看看中间 ...
- python控制电脑关机_Python利用智能音箱语音控制电脑开关机
完成下面这个有趣的实验,你所需要的东西有:1.路由器(能够形成局域网,且电脑已用网线连接) 2.一个智能音箱(本教程使用的是亚马逊 Echo Dot 2) 3.主板支持wake on lan (大部分 ...
- 手机重力感应控制电脑(一)
这几天没什么事,看着自己的手机nokia5530,想到这手机虽然过时了,但是能不能做点什么有意思的事呢?我喜欢在电脑上玩极品飞车,如果能用手机的重力感应器操控电脑玩极品飞车那多好啊!正好学过一点Qt, ...
最新文章
- Datawhale组队学习周报(第020周)
- OpenCASCADE绘制测试线束:拓扑命令之拓扑变换
- 图论讲解(3)——最小生成树(基础)
- A small tip to explore how to call a method of a control
- 前端学习(2533):mapgetter和actions
- 17 操作系统第四章 磁盘管理 磁盘的结构 磁盘调度算法 减少磁盘延迟时间的方法
- OpenGL:画个水壶
- 方法~作用于对象~失败_消息三:ActiveMQ Topic 消息失败重发
- (16)System Verilog联合体union详解
- CADisplaylink初解
- FPGA按键消抖—两种按键消抖形式的对比
- 前端canvas制作微信小游戏(一)
- 百度搜索关键词自动提交
- AD(altium designer)15原理图与PCB设计教程(十)——信号完整性分析
- 触摸板小红点失灵怎么办? - Thinkpad
- 脸部表情,走路姿势,微表情
- 什么是微控制器? 通用组件的定义特征和架构
- mysql输出max函数_MySQL中的max()函数使用教程
- java 性能 火焰图_性能调优工具-火焰图
- 特征工程(科大讯飞阿泽大佬share)
热门文章
- __clone class php_「PHP 技巧」 不要直接克隆对象,请使用深拷贝
- typescript 判断异步执行已经结束_vue进阶系列——用typescript玩转vue和vuex
- svn mysql_SVN使用MySQL验证用户名密码(HTTP)
- .form文件_含文件上传的form表单AJAX提交小结
- php hook 键盘,Windows C++ 键盘钩子
- mysql数据迁移到teradata_TERADATA数据库中SELECT的使用
- catia2017安装包打开没反应_云顶手游10.19安装包,9月16日
- java observable 使用_如何使用rxjava2取消Observable.timer?
- 弹性地基梁板实用计算_桥梁工程基础处理、支架搭设、预压方案及计算书
- 较为综合的c语言题目,c语言考试综合题.doc