Pages

Friday, July 27, 2012

starting building remote desktop application with java

java merupakan bahasa pemrograman yang cukup sering digunakan pada saat ini. Java dikenal dengan pemrogramannya yang cukup handal dalam menangani garbage collector yaitu selalu memproteksi kode2 pemrograman yang sekiranya setelah selesai digunakan lgsung di tangani/ditutup secara khusus sehingga tidak menciptakan memory leak / digunakan oleh orang2 yang tidak berwenang untuk digunakan dalam berbagai hal seperti exploitasi program, mencari data2 berharga yang dapat digunakan untuk menjebol sebuah server, mengirimkan ddos hingga pengambilan alih pc.

java juga dikenal dengan write once run everywhere. jadi kita tidak perlu takut program yang kita jalankan hanya bisa dijalankan di windows saja. compiler java akan mengubah program kita (class) menjadi byte2 yang akan ditranslasikan di masing2 os seperti linux, mac, windows,dll. Sehingga program kita dapat berjalan di mana saja. jadi pengguna dari program kita tidak hanya terbatas 1 vendor saja. that's why nowdays java very popular.  <3


dibawah ini merupakan program yang sedang saya kembangkan untuk membuat remote desktop berbasis java. Untuk langkah awal server hanya bisa menangkap layar desktopnya lalu mengirimnya ke client sehingga dapat dilihat langsung tampilan dekstopnya oleh client.





/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ServerClient;

import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;

/**
 *
 * @author admin
 */
public class Server {
    private ServerSocket Server;
    private Socket socket ;
   
    private Rectangle UkuranKotak;
    private BufferedImage image;
    private Robot robot;
   
    private OutputStream out;
   
    //constructor
   
    Server () {
        bikin_server(777);
       Cek_Ukuran_Desktop();
       Capture_Gambar();
       Kirim_Gambar();
       TutupServer();
               
            }
   
   
   
   
    //end of constructor
    public Rectangle Cek_Ukuran_Desktop(){
       
    UkuranKotak = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());   
    
    return UkuranKotak;
       
    }
   
    public void Capture_Gambar(){
        try {
            robot= new Robot();
            image =  robot.createScreenCapture(Cek_Ukuran_Desktop());
        } catch (AWTException ex) {
            Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
        }
       
         }
   
    public void Kirim_Gambar(){
        try {
            out = socket.getOutputStream();      
           
            ImageIO.write(image, "png", out);  //kirim bufferedimage ke client
           
            System.out.println("Sent image!");
           
           
        } catch (IOException ex) {
            System.out.println("eror pada saat mengirim gambar" + ex);
        }
       
       
       
    }
   
   
   
   

   
   
   
   
   
   
   
   
    public void bikin_server(int port){
        try {
            Server = new ServerSocket(port);
            socket = Server.accept();
            System.out.println("server telah dibangun di port :" +port);
            
        } catch (IOException ex) {
            System.out.println("terdapat kesalahan di bagian bikin server ,"+ex);
        }

       
    }
   
    void TutupServer(){
        try {
               
            if(out!=null) out.close();
            if (socket != null)    socket.close();
            System.out.println("selesai mengirim gambar, tutup koneksi");


        } catch (IOException ex) {
            System.out.println("tidak bisa menutup socket" + ex);
                    }
   
   }
   
   
   
   
   
    public static void main(String[]args){
       
        Server jalankan = new Server();
       
       
    }
   
   
   
   
   
   
   
   
}


















/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package image;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.*;

/**
 *
 * @author admin
 */
public class Client extends JFrame {
   
   
   private Socket socket    =null          ;
   private BufferedImage gambar =null;
   private File out= null;
   private JLabel label1;
  
  
   //constructor
  
  
   public Client(){
   BikinSocketClient("localhost",777);
   DapatkanGambarDariSocket();
   CetakGambarKeFolder();
   // ConvertGambarKeByte();
  
  
   TutupClient();
  
  
  Bikin_Interface();
  
  
  
  
  
   }
  
  
  
  
  
   //end of constructor
  
  
  
  
  public void Bikin_Interface(){
     
       label1 = new JLabel();
   add(label1);
   label1.setIcon(new ImageIcon("c:/berhasilyaaa.png"));
  
  
  
  
  
  
        JScrollPane p = new JScrollPane( label1 );
        getContentPane().add( p );
        setDefaultCloseOperation( EXIT_ON_CLOSE );
        setSize( 300, 300 );

        setVisible( true );
  
     
  }
  
  
  
  public void DapatkanGambarDariSocket(){
        try {
            gambar =ImageIO.read(socket.getInputStream());
           
        } catch (IOException ex) {
            System.out.println("gambar tidak diterima / socket eror"+ex);
        }
       
       
      
  }
  
  
  /* public void ConvertGambarKeByte(){
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(gambar,"png" , baos);
            baos.flush();
            byte[] UkuranImage = baos.toByteArray();
            baos.close();
           
           
        } catch (IOException ex) {
            Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
        }
   }
  
   */
  
  
  
  
  
  
   void CetakGambarKeFolder(){

    
        try {
           
            out = new File("c:/berhasilyaaa.png");
           
            ImageIO.write(gambar,"png",out);
        } catch (IOException ex) {
           System.out.println("gambar tidak ditemukan" + ex);
        }

   }

  
  
  
    void BikinSocketClient(String serverName, int ServerPort){
        try {
            socket = new Socket(serverName,ServerPort);
        } catch (UnknownHostException ex) {
            System.out.println("host tidak ditemukan" + ex);
        } catch (IOException ex) {
            System.out.println ("port eror" + ex);
        }
    }
  
  
    void TutupClient(){

        try {
 
            if (socket != null)    socket.close();
            System.out.println("selesai menerima gambar, tutup koneksi");


        } catch (IOException ex) {
            System.out.println("tidak bisa menutup socket" + ex);
                    }
    }
  
  
   public static void main(String[]args){
      
      Client jalankan = new Client();   
      
   }
  

   
   }













klo mau dijalankan di komputer yang berbeda tinggal edit

BikinSocketClient("localhost",777);    -> arahin ke ip server.






No comments:

Post a Comment