//Host.java
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.security.Provider.Service;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Host extends JFrame{
JPanel mainPanel ;
JButton startButton ;
JButton stopButton ;
JTextArea msgText ;
JLabel stateLabel ;
JScrollPane scrollPane ;
ServerSocket server;
Socket socket;
public Host(){
//----------初始化組件-----------
startButton = new JButton( "啓動服務器" ) ;
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
startServer();
}
});
stopButton = new JButton( "停止服務器" ) ;
stopButton.setEnabled(false);
stopButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
stopServer();
}
});
mainPanel = new JPanel();
stateLabel = new JLabel( "未監控" ) ;
msgText = new JTextArea() ;
scrollPane = new JScrollPane( msgText ) ;
//-------------設置組件屬性----------
mainPanel.setLayout( null );
startButton.setBounds( 10 , 10 , 100 , 30 ) ;
stopButton.setBounds( 120 , 10 , 100 , 30 );
stateLabel.setBounds( 230 , 10 , 100 , 30 );
scrollPane.setBounds( 10 , 50 , 350 , 320 );
mainPanel.add( stopButton ) ;
mainPanel.add( startButton ) ;
mainPanel.add( stateLabel ) ;
mainPanel.add( scrollPane ) ;
//----------初始化窗體屬性----------
this.add( mainPanel ) ;
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
this.setBounds( 800,0,370 , 400 );
this.setVisible( true );
}
/***
* 啓動服務器
*/
protected void startServer() {
setMessage("服務器啓動中。。。。");
try{
server=new ServerSocket(9999);
new Thread(new Runnable() {
@Override
public void run() {
service();
}
}).start();
startButton.setEnabled(false);
stopButton.setEnabled(true);
// startButton.setEnabled(false);
// stopButton.setEnabled(true);
//// Socket socket=server.accept();
//// InputStream in=socket.getInputStream();
//// int command=in.read();
//// if(command==1){
//// System.out.println("正在關機...");
////// Runtime runtime =Runtime.getRuntime();
////// runtime.exec("cmd /c shutdown -s -t 0");
//// }
}catch(Exception e){
e.printStackTrace();
setMessage("程序出錯:"+e.getMessage());
}
}
/***
* 爲用戶提供服務
*/
protected void service() {
setMessage("開始爲用戶提供服務....");
try{
socket=server.accept();
setMessage("來了一個控制者");
stateLabel.setText("狀態:被監控");
InputStream in=socket.getInputStream();
OutputStream out=socket.getOutputStream();
while(socket!=null){
int command=in.read();
if(command== -1){
setMessage("控制者離開了。。。");
break;
}else if(command==1){
// Runtime runtime= Runtime.getRuntime();
// runtime.exec("cmd /c shutdown -s -t 0");
setMessage("這個禽獸要關你的電腦。。。");
}else if(command==2){
setMessage("這個禽獸要鎖定你的鼠標");
new Thread(new Runnable() {
@Override
public void run() {
try{
while(true){
Robot robot=new Robot();
robot.mouseMove(0, 0);
Thread.sleep(5000);
}
}catch(Exception e){
setMessage("程序出錯"+e.getMessage());
}
}
}).start();
} else if(command==3){
setMessage("這個禽獸要累死你的CPU和硬盤");
new Thread(new Runnable() {
@Override
public void run() {
while(true){
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
try{
FileInputStream in=new FileInputStream("c:/a.txt");
while(true){
FileOutputStream out=new FileOutputStream("c:/b.txt");
int a=in.read();
out.write(a);
out.close();
}
}catch(Exception e){
setMessage("程序出錯:"+e.getMessage());
}
}
}).start();
}
}
stopService();
}catch(Exception e){
e.printStackTrace();
}
}
/***
* 停止爲用戶提供服務
*/
private void stopService() {
try{
socket.close();
}catch(Exception e){
}
socket=null;
stopServer();
setMessage("終止服務。。。");
}
/***
* 停止服務器
*/
protected void stopServer() {
try{
server.close();
}catch(Exception e){
e.printStackTrace();
}
server=null;
startButton.setEnabled(true);
stopButton.setEnabled(false);
stateLabel.setText("狀態:未監控");
setMessage("服務器停止運行。。。");
}
/***
* 輸入消息的文本框
* @param msg
*/
private void setMessage(String msg) {
msg=msgText.getText()+msg+" "+new Date().toLocaleString()+"\r\n";
msgText.setText(msg);
}
public static void main(String args[]){
new Host() ;
}
}
//Control.java
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;
public class Control extends JFrame{
JPanel mainPanel ;
JTextField ipText ;
JButton connButton ;
JButton disConnButton ;
JButton closeButton ;
JButton clockButton;
JButton workToDieButton;
JComboBox killPathBox;
Socket socket;
Object s[]={"進程1","進程2","進程3","進程4","進程5","進程6","進程7","進程8"};
public Control(){
//-----------初始化組件---------
mainPanel = new JPanel() ;
ipText = new JTextField() ;
connButton = new JButton( "連接" ) ;
connButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
connectServer();
}
});
disConnButton = new JButton( "斷開" ) ;
disConnButton.setEnabled(false);
disConnButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
disConnServer();
}
});
closeButton = new JButton( "關機" ) ;
closeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
closeComputer();
}
});
clockButton = new JButton("鎖定");
clockButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
clockMouse();
}
});
workToDieButton=new JButton("工作到死");
workToDieButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
workToDie();
}
});
killPathBox=new JComboBox(s);
killPathBox.addPopupMenuListener(new PopupMenuListener() {
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
System.out.println("sasadsas");
killPath();
}
@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
// TODO Auto-generated method stub
}
@Override
public void popupMenuCanceled(PopupMenuEvent e) {
// TODO Auto-generated method stub
}
});
//------------設置組件-------------
mainPanel.setLayout( null );
ipText.setBounds( 10 , 10 , 150 , 30 ) ;
connButton.setBounds( 170 , 10 , 70 , 30 );
disConnButton.setBounds( 250 , 10 , 70 , 30 );
closeButton.setBounds( 330 , 10 , 70 , 30 );
clockButton.setBounds(410,10,70,30);
workToDieButton.setBounds(490,10,70,30);
killPathBox.setBounds(600, 10, 70, 30);
mainPanel.add( ipText ) ;
mainPanel.add( connButton ) ;
mainPanel.add( disConnButton ) ;
mainPanel.add( closeButton ) ;
mainPanel.add(clockButton);
mainPanel.add(workToDieButton);
mainPanel.add(killPathBox);
//----------初始化窗體屬性----------
this.add( mainPanel ) ;
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
this.setSize( 800 , 500 );
this.setVisible( true );
}
/***
* 連接目標主機
*/
protected void connectServer() {
try{
socket=new Socket(ipText.getText(),9999);
connButton.setEnabled(false);
disConnButton.setEnabled(true);
// InputStream in=socket.getInputStream();
// OutputStream out =socket.getOutputStream();
//
// //1表示關閉電腦
// out.write(1);
// out.flush();
}catch(Exception e){
e.printStackTrace();
}
}
/***
* 斷開與目標主機的連接
*/
protected void disConnServer() {
try{
socket.close();
}catch(Exception e){
e.printStackTrace();
}
socket=null;
connButton.setEnabled(true);
disConnButton.setEnabled(false);
}
/***
* 關閉遠程計算機
*/
protected void closeComputer() {
if(socket!=null){
try{
OutputStream out=socket.getOutputStream();
out.write(1);
out.flush();
}catch(Exception e){
e.printStackTrace();
}
}
}
/***
* 鎖定鼠標
*/
protected void clockMouse() {
if(socket!=null){
OutputStream out;
try {
out = socket.getOutputStream();
out.write(2);
out.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
protected void workToDie() {
if(socket!=null){
try{
OutputStream outputStream=socket.getOutputStream();
outputStream.write(3);
outputStream.flush();
}catch(Exception e){
e.printStackTrace();
}
}
}
/***
* 結束用戶的進程
*/
protected void killPath() {
if(socket!=null){
try{
OutputStream outputStream=socket.getOutputStream();
outputStream.write(4);
outputStream.flush();
}catch(Exception e){
e.printStackTrace();
}
}
}
public static void main(String args[]){
new Control() ;
}
}