java 遠程監控

//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() ;
     }
    
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章