Membuat Program Untuk Jaringan LAN Menggunakan Delphi [Update 12 Mei 2011 – Remote Shutdown]


Tujuan

  • Dapat membuat program sederhana untuk jaringan skala kecil menggunakan komponen socket pada Delphi (saya menggunakan Delphi 7), contoh program yaitu Billing, Remote Komputer, Messenger, Bandwidth Manager dll ,, pokoknya yang membutuhkan 2 atau lebih komputer deh!๐Ÿ˜€

Socket

  • Apa itu Socket? Socket adalah mekanisme komunikasi yang memungkinkan terjadinya pertukaran data antar program atau proses antar mesin.
  • Daleman Socket terdiri dari record atau data yang berisi 4 informasi yaitu
      – local address dan local port
      – remote address dan remote port

  • Gambar bagaimana terjadinya proses komunikasi diantara 2 komputer melalui socket
    1. 1.

      Keterangan

      – Server mulai dijalankan dengan local address misalkan 43.3.1.0 dan local port = 5678

      – Gambar buletan warna biru yang isinya “TCP/IP” itu adalah jalur komunikasinya

      – Untuk remote address dan remote port pada Server masih berisi “?” kenapa?? karena belum ada “remote” atau client yang terhubung dengan server, makannya masih kosong

      2.

      Keterangan

      – Muncul Client dengan local address 3.22.0.1, Client tersebut berusaha terhubung dengan Server yang telah diketahui sebelumnya memiliki address (Server) 43.3.1.0 dan port (Server) 5678 itulah kenapa remote address pada Client berisi 43.3.1.0 dan remote port pada Client berisi 5678. Dengan kata lain Client musti tau dulu address dan port dari Server yang di tuju.

      – Perhatikan gambar, pada local port Client masih berisi “?” kenapa? karena nantinya bagian ini akan di isi oleh Server sebagai tanda bahwa koneksi di terima oleh Server

      3.

      Keterangan

      – Koneksi diterima oleh Server dan baik Client maupun Server saling mengisi informasi dari socket record nya, lihat gambar tidak ada lagi tanda “?” kan.

  • Satu Server Untuk Banyak Client

    1. 1.

      Keterangan

      – Komputer Server menggunakan Server socket dalam mode Listening atau “Mendengarkan” dalam mode ini Server socket terbuka (welcoming) untuk Client yang ingin terhubung dengan Server.

      – Setiap ada Client yang ingin terhubung dengan Server maka tiap2 Client tersebut pertama-tema akan terhubung dengan Server Socket.

      2.

      Keterangan

      – Setelah Client tersebut terhubung dengan Server Socket, Server Socket secara otomatis akan membuat socket baru dengan nama “Server Client Socket”, yang nantinya aliran komunikasi antara Client tersebut dengan Server akan melalui “Server Client Socket” ini, dan bukan melalui Server Socket. Dengan begitu si Server Socket bisa dengan bebas “Menunggu” datangnya Client yang baru.

      3.

      Keterangan

      – Dan begitulah yang terjadi seterusnya, intinya adalah tiap2 Client yang terhubung dengan Server akan menggunakan “Server Client Socket” -nya masing-masing, sehingga tidak mengganggu kinerja si Server Socket yang sedang “menunggu” datangnya koneksi dari Client yang ingin terhubung.

Sekian dulu untuk penjelasan dasarnye,, ntar di lanjut lagi yee.. gawean lom beres heuheu..:mrgreen: :mrgreen: :mrgreen:

#################################################
Update 27 April 2011
#################################################

Biar lebih jelas, markiding mari-kita-ngoding buat contoh aja, yang paling simple untuk contoh socket biasanya sih program chat (mengirim dan menerima text lewat socket)

Sebelumnya yang menggunakan delphi 7 pasti tidak akan menemukan komponen TSocket, memang secara default komponen ini tidak ada, mengapa?? mungkin karena pada pendahulunya yaitu delphi 6, komponen ini banyak di salah gunakan untuk membuat program jahat, contohnya trojan, backdoor, worm , dsb.. pokoke malcode deh๐Ÿ˜ˆ๐Ÿ˜ˆ , bahkan sampai sekarang ada beberapa anti virus yang mendeteksi program yang kita buat sebagai trojan, apabila di program kita menggunakan komponen ini..๐Ÿ™„๐Ÿ™„

untuk menginstall komponen Socket ini, berikut caranya:

  1. Buka delphi masuk ke menu Component >> Install Packages..
  2. Klik Tombol Add
  3. Cari file “dclsockets70.bpl” Biasanya berada di folder “Program Files\Borland\Delphi7\Bin\dclsockets70.bpl”
  4. Setelah terinstall komponen Socket ini akan muncul pada tab / pallete Internet

berikut ini adalah program chat sangat sederhana๐Ÿ˜› hanya memperlihatkan bagaimana mengirim dan menerima text melalui komponen socket, ada 2 program, yang pertama adalah Server dan kedua adalah Client

penampakan program Server

penampakan program Client

silahkan donlot program dan source code nya di http://plunder.com/6c655d062a
pass: iamsenu.wordpress.com

oke pelajari saja source code nya, gampang kok!๐Ÿ˜Ž๐Ÿ˜Ž๐Ÿ˜Ž

sekian.. semoga sedikit bisa bantu.. nanti di update lagi๐Ÿ˜Ž๐Ÿ˜Ž ๐Ÿ˜Ž

#################################################
Update 1 Mei 2011
#################################################

Membuat Program Chat Multi Client Sederhana

sebagai kelanjutan dari tutorial ini, mari kita ngoding lagi๐Ÿ˜Ž๐Ÿ˜Ž

Program ini adalah lanjutan dari program chat sebelumnya,
perbedaannya terdapat pada jumlah client, kalau pada program chat
sebelumnya server hanya melayani satu client, pada program ini
server akan melayani banyak client, karena memang sudah seharusnya lah “seorang” Server melayani banyak Client๐Ÿ˜†๐Ÿ˜†

penampakan (klik untuk memperbesar)

donlot program + source code nya di http://plunder.com/95251a9310 (pass:iamsenu.wordpress.com)

oh ya ada email masup, nanya “knapa engga pake indy saja, bukankah lebih powerfull??” jawaban saya singkat karena belum coba2 belajar pake indy, dan kebutuhan masih bisa di handle sama Socket jadi ya.. masih enak aja..๐Ÿ˜ณ๐Ÿ˜ณ .. mungkin suatu saat nanti deh blajar indy..

enjoy… tunggu update an berikutnya๐Ÿ˜Ž๐Ÿ˜Ž

#################################################
Update 12 Mei 2011 – Remote Shutdown
#################################################

Apa itu Remote Shutdown?? yang belum tau jadi intinya kita men-shutdown, merestart, dan melogoff komputer atau PC lain melalui komputer kita, tentu saja komputer yang akan kita shutdown harus terhubung dengan komputer kita melalui suatu jaringan.

contoh ada 3 komputer (kita berimajinasi, agak malas gambar soalnya๐Ÿ˜† ) A, B ,C . Semua komputer tersebut terhubung pada suatu jaringan (LAN), nah kita pegang komputer A tapi ingin menshutdown komputer B atau C tanpa harus beranjak dari tempat duduk, itulah tujuannya dibuat program Remote Shutdown ini.

KONSEP
Sebelum masuk ke koding, ada baiknya memahami dulu konsep dari program yang akan dibuat.

Pada program chat sebelumnya, diperlihatkan bagaimana mengirim text (string) melalui socket, nah sebenarnya untuk program remote shutdown ini sama saja, hanya dibuat suatu aturan contohnya apabila client menerima text dari server dengan isi “shutdown” maka client akan melakukan serantaian kode yang akan men-shutdown komputernya sendiri, selanjutnya apabila client menerima text dari server dengan isi “restart” maka client akan melakukan serantaian kode yang mengakibatkan komputernya melakukan restart (reboot), begitu seterusnya.

Jadi secara logis sudah ketebak kan kodenya? tinggal if..then..else.. saja๐Ÿ˜†

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var perintah:string;
begin

perintah:=Socket.ReceiveText; //ambil text yang dikirim dari server

if perintah='shutdown' then blah...blah..
  else if perintah='restart' then blah...blah..
    else if perintah='logoff' then blah...blah..;
end;

Berarti sekarang tinggal nyari koding untuk men-shutdown, restart, dan logoff komputer untuk mengganti kalimat “blah…blah..” di atas๐Ÿ˜†

Bagaimana caranya?? yah googling lah!:mrgreen:

(Dan setelah 2 menit dapat juga)

//------FUNGSI Shutdown, Restart, LogOff System------Work On Xp------------
function DA_WinExit(RebootParam: Longword): Boolean;
var
  TTokenHd: THandle;
  TTokenPvg: TTokenPrivileges;
  cbtpPrevious: DWORD;
  rTTokenPvg: TTokenPrivileges;
  pcbtpPreviousRequired: DWORD;
  tpResult: Boolean;
const
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
  begin
    tpResult := OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
      TTokenHd) ;
    if tpResult then
    begin
      tpResult := LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, TTokenPvg. Privileges[0].Luid) ;
      TTokenPvg.PrivilegeCount := 1;
      TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      cbtpPrevious := SizeOf(rTTokenPvg) ;
      pcbtpPreviousRequired := 0;
      if tpResult then Windows.AdjustTokenPrivileges(TTokenHd, False, TTokenPvg, cbtpPrevious,
        rTTokenPvg, pcbtpPreviousRequired) ;
    end;
  end;
  Result := ExitWindowsEx(RebootParam, 0) ;
end;

//EOF*******************************************************

Cara pakai dari fungsi di atas yaitu:

DA_WinExit(EWX_SHUTDOWN or EWX_FORCE) //untuk men-shutdown komputer

DA_WinExit(EWX_REBOOT or EWX_FORCE) //untuk merestart komputer

DA_WinExit(EWX_LOGOFF or EWX_FORCE) //untuk me log off komputer

Jadi setelah mendapatkan penggalan source code diatas tinggal dimasukan ke dalam statement if..then..else..

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var perintah:string;
begin

perintah:=Socket.ReceiveText; //ambil text yang dikirim dari server

if perintah='shutdown' then DA_WinExit(EWX_SHUTDOWN or EWX_FORCE)
else if perintah='restart' then DA_WinExit(EWX_REBOOT or EWX_FORCE)
else if perintah='logoff' then DA_WinExit(EWX_LOGOFF or EWX_FORCE); 
end;

Udah selesai deh๐Ÿ˜Ž , tentu saja dengan tau konsep dasarnya, bisa dikembangin tidak hanya sebatas shutdown, restart, or logoff saja, mau remote2 yang lain pun bisa๐Ÿ˜† , misalnya yang agak bersifat iseng, mematikan monitor, mendisable keyboard atau mouse, membuka cdrom, menjalankan suatu program tertentu, dll.
Lumayanlah bikin kaget orang lain๐Ÿ˜† , untuk kodingnya yah googling lah tinggal make doang, mikir sendiri mah puyeng asle๐Ÿ™„๐Ÿ™„ tapi inget yah selalu sertakan credit from the original author๐Ÿ˜Ž (kalau saya terus terang suka lupa nama authornya, yang pasti gentayangan di situs2 ini –> iC0de.org, Hackhound.org, dan openSC.ws๐Ÿ˜Ž )

Berikut ini adalah program remote shutdown
penampakan

penampakan

Unggas source code nya di http://plunder.com/e7d035f6c3 (pass:iamsenu.wordpress.com)

Untuk lebih jelasnya, gunakan 2 komputer yang saling terhubung peer to peer, misal A dan B, jalankan program yang client pada komputer B, komputer inilah yang nantinya akan kita shutdown, sedangkan untuk program server jalankan pada komputer A, silahkan coba shutdown komputer B, melalui program server yang terdapat pada komputer A.

Bagaimana? Sudah jelas kah konsep nya? ato masih bingung?๐Ÿ˜† , tinggal butuh kreatifitas dan kemauan saja dalam mengembangkan๐Ÿ˜† , mungkin ke depan bakalan update bagaimana mengirim dan menerima file via socket, atau mungkin sampe live streaming monitoring ??๐Ÿ˜†

Sekian dan terima kasih atas attention nya, semoga bisa sedikit membantu teman2 di luar sana๐Ÿ˜Ž

4 responses to “Membuat Program Untuk Jaringan LAN Menggunakan Delphi [Update 12 Mei 2011 – Remote Shutdown]

  1. Terima kasih banyak gan atas share Ilmunya, minta bantuannya nih, bagaimana cara buat client server Delphi 7 dengan database MS Access…bisa kirim ke email saya; muhammad.asad010@gmail.com…terima kasih gan…

    • salam hormat
      kok link donlot nya gk ada ya mas ? padahal udah register…

Comments are closed.