Monday, December 3, 2012

Mengecek Apakah sebuah File Sedang Digunakan Atau Tidak


function ApakahFileSdgDigunakan(FileName: TFileName): Boolean;
var
  HFileRes: HFILE;
begin
  Result := False;
  if not FileExists(FileName) then Exit;
  HFileRes := CreateFile(PChar(FileName),
                         GENERIC_READ or GENERIC_WRITE,
                         0,
                         nil,
                         OPEN_EXISTING,
                         FILE_ATTRIBUTE_NORMAL,
                         0);
  Result := (HFileRes = INVALID_HANDLE_VALUE);
  if not Result then
    CloseHandle(HFileRes);
end;

// Example

procedure TForm1.Button1Click(Sender: TObject);
begin
if ApakahFileSdgDigunakan('C:\Program Files\Borlandx\Delphi 3\BIN\delphi32.exe') then
    ShowMessage('File sedang digunakan')
  else
    ShowMessage('File Tidak Sedang Digunakan');

end;

Cara Mengubah Resolusi Layar

Terkadang aplikasi yang kita bangun membutuhkan ukuran layar yang sesuai dengan kebutuhan kita, ada cara mudah merubah resolusi layar sbb:


.
.
.

procedure RubahResolusi(XRes, YRes: DWord);
var
   lpDevMode : TDeviceMode;
begin
     EnumDisplaySettings(nil, 0, lpDevMode);

     lpDevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
     lpDevMode.dmPelsWidth := XRes;
     lpDevMode.dmPelsHeight := YRes;
     ChangeDisplaySettings(lpDevMode, 0);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
      RubahResolusi(800,600);
end;


Membangun Password Secara Random


.
.
.
function RandomPassword(PLen: Integer): string;
var
  str: string;
begin
  Randomize;
  str    := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  Result := '';
  repeat
    Result := Result + str[Random(Length(str)) + 1];
  until (Length(Result) = PLen)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  //generate sebuah password dengan 10 chars
  label1.Caption := RandomPassword(10);
end;

Thursday, May 24, 2012

Procedure Untuk Mengecek Status Koneksi Internet


.
.
.
Uses WinInet
.
.
.
procedure CheckConnection;
var
dwFlags: DWORD;
begin
if InternetGetConnectedState(@dwFlags, 0) then begin
   if (dwFlags and INTERNET_CONNECTION_MODEM)=INTERNET_CONNECTION_MODEM then
      ShowMessage('Koneksi Internet Via Modem')
   else if (dwFlags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
      ShowMessage('Koneksi Internet Via LAN')
   else if (dwFlags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then
      ShowMessage('Koneksi Internet Via Proxy')
   else if (dwFlags and INTERNET_CONNECTION_MODEM_BUSY) =
   INTERNET_CONNECTION_MODEM_BUSY then
     ShowMessage('Modem Sedang Sibuk');
   end else
   ShowMessage('Offline');
end;


//Cara Memanggil Procedurenya sbb :

procedure TForm1.Button1Click(Sender: TObject);
begin
   CheckConnection;
end;

Cara Menampilkan & Menyembunyikan Cursor

procedure TForm1.Button1Click(Sender: TObject);
begin
    ShowCursor(False);  // Menyembunyikan Cursor
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    ShowCursor(true);  // Menampilkan Cursor
end;

Monday, May 21, 2012

Saturday, May 19, 2012

Fungsi Untuk Men-ShutDown atau Me-Restart Komputer


Berikut adalah fungsi untuk men-Shutdown atau me-Restart Komputer


function MyExitWindows(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;

Contoh cara memanggil fungsi diatas adalah sbb :

// *** SHURDOWN ******
procedure TForm1.Button1Click(Sender: TObject);
begin
  MyExitWindows(EWX_POWEROFF or EWX_FORCE);
end;

// *** RESTART / BOOTING ******
procedure TForm1.Button1Click(Sender: TObject);
begin
  MyExitWindows(EWX_REBOOT or EWX_FORCE);
end;

Wednesday, May 16, 2012

Bagaimana Cara - Agar Form Tidak Dapat Dipindahkan Atau Diresize



  public
      procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
 {..}

implementation
{..}


 procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
  if ((Msg.CmdType and $FFF0) = SC_MOVE) or
    ((Msg.CmdType and $FFF0) = SC_SIZE) then
  begin
    Msg.Result := 0;
    Exit;
  end;
  inherited;
end;

Bagaimana Cara Me-Restart Program yang sedang berjalan

Terkadang pada saat tertentu, kita ingin program yang kita bikin me-restart dirinya (Tanpa Harus keluar dari aplikasi program yang kita bikin),

  
procedure TForm1.Button1Click(Sender: TObject);
var
  NamaProgram: PChar;
begin
  NamaProgram:= PChar(Application.ExeName);
  WinExec(NamaProgram, SW_SHOW);
  Application.Terminate;
end;


:) mudah2an bermanfaat 

Membuat Tombol ALT+F4 menjadi tak berfungsi :)

public
       procedure AppMessage(var Msg: TMSG; var HAndled: Boolean);
end;
{...}
implementation
{...}



procedure TForm1.FormCreate(Sender: TObject);
begin
    Application.OnMessage := AppMessage;
end;


procedure TForm1.AppMessage(var Msg: TMSG; var Handled: Boolean);
begin
  Handled := False;
  case Msg.Message of
    WM_SYSKEYDOWN:
      if Msg.wParam = VK_F4 then
        Handled := True; // Matikan Fungsi ALT-F4
  end;
end;




:))

Membuat Tombol ALT+TAB, CTRL+ESC, ALT+ESC menjadi tak berfungsi

Buatlah sebuah file unit dengan nama file DisableWinKeys.Pas, simpan dalam folder LIB Delphi anda,    seperti dibawah ini  :



(************************************************************
  this unit migrated from dll project(by Kambiz@delphiarea.com)

  Originally created by:
    Andrea Belli@delphiarea.com
      March 5th, 2010, 12:51 am
      enhanced: CTRL+ESC,ALT+TAB,ALT+ESC

  modified by;
    rehmoe@yahoo.com
      11:23 29/11/2010 more key added,
        enhanced: CTRL+ESC,
                  ALT+TAB,
                  ALT+ESC,
                  CTRL+ENTER,
                  WINKEY (Left / Right),
                  MENKEY(Left/Right)
**************************************************************)

unit DisableWinKeys;

interface

uses Windows;

type
  PKBDLLHOOKSTRUCT = ^TKBDLLHOOKSTRUCT;
  TKBDLLHOOKSTRUCT = packed record
    vkCode: DWORD;
    scanCode: DWORD;
    flags: DWORD;
    time: DWORD;
    dwExtraInfo: DWORD;
  end;

  function DisableWindowsUI: Boolean;
  function EnableWindowsUI: Boolean;
  function IsWindowsUIDisabled: Boolean;

const
  WH_KEYBOARD_LL = 13;

const
  LLKHF_ALTDOWN = $0020;

var
  hKeyboardHook: HHOOK = 0;

implementation

function LowLevelKeyboardHook(nCode: Integer; wParam: WPARAM; lParam: LPARAM): HRESULT; stdcall;
var
  pkbhs: PKBDLLHOOKSTRUCT;
begin
  pkbhs := PKBDLLHOOKSTRUCT(lParam);
  if nCode = HC_ACTION then
  begin
    // Disable CTRL+ESC
    if (pkbhs^.vkCode = VK_ESCAPE) and WordBool(GetAsyncKeyState(VK_CONTROL) and $8000) then
    begin
      Result := 1;
      Exit;
    end;
    // Disable ALT+TAB
    if (pkbhs^.vkCode = VK_TAB) and LongBool(pkbhs^.flags and LLKHF_ALTDOWN) then
    begin
      Result := 1;
      Exit;
    end;
    // Disable ALT+ESC
    if (pkbhs^.vkCode = VK_ESCAPE) and LongBool(pkbhs^.flags and LLKHF_ALTDOWN) then
    begin
      Result := 1;
      Exit;
    end;
    //=============START:modified=====================================================
    // Disable CTRL+ENTER
    if (pkbhs^.vkCode = VK_RETURN) and LongBool(pkbhs^.flags and LLKHF_ALTDOWN) then
    begin
      Result := 1;
      Exit;
    end;
    // Disable winkey(Left / Right)
    if (pkbhs^.vkCode = VK_LWIN) or (pkbhs^.vkCode = VK_RWIN) then
    begin
      Result := 1;
      Exit;
    end;
    // Disable menukey(Left/Right)
    if (pkbhs^.vkCode = VK_MENU) or (pkbhs^.vkCode = VK_LMENU) or (pkbhs^.vkCode = VK_RMENU) then
    begin
      Result := 1;
      Exit;
    end;
    //==================END:Modified================================================================
  end;
  Result := CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
end;

function DisableWindowsUI: Boolean;
begin
  if hKeyboardHook = 0 then
    hKeyboardHook := SetWindowsHookEx(WH_KEYBOARD_LL, @LowLevelKeyboardHook, HInstance, 0);
  Result := (hKeyboardHook <> 0)
end;

function EnableWindowsUI: Boolean;
begin
  Result := False;
  if (hKeyboardHook <> 0) and UnhookWindowsHookEx(hKeyboardHook) then
  begin
    hKeyboardHook := 0;
    Result := True;
  end;
end;

function IsWindowsUIDisabled: Boolean;
begin
  Result := (hKeyboardHook <> 0)
end;

end.




Cara pemanggilannya:
(Pastikan DisableWinKeys sudah ditambahkan pada bagian uses)

//disable
procedure TForm1.btn1Click(Sender: TObject);
begin
  DisableWindowsUI
end;

//enable
procedure TForm1.btn2Click(Sender: TObject);
begin
  EnableWindowsUI
end;


Procedure Untuk Menampilkan atau menutup StartMenu Windows

procedure ShowStartMenu;
var
   hSMenu: HWND;
begin
   hSMenu:= FindWindow ('DV2ControlHost', 'Start Menu');
   ShowWindow (hSmenu, SW_RESTORE);
end;

procedure HideStartMenu;
var
   hSMenu: HWND;
begin
   hSMenu:= FindWindow ('DV2ControlHost', 'Start Menu');
   ShowWindow (hSmenu, SW_HIDE);
end;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Kalau mau menjegal supaya penekanan startmenu tidak bisa dilakukan
manfaatkan timer, rubah interval timer sekecil mungkin, terus ketik sbb :

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  HideStartMenu;
end;

:)

Sunday, May 13, 2012

Membuat Form Seukuran Layar Yang sedang Aktif & Menempatkannya Selalu Stay On Top


Mungkin temen2  pingin bikin aplikasi yang layarnya otomatis seukuran layar windows yang sedang berjalan dan menempatkan aplikasi selalu berada didepan (stay On Top), yang harus dilakukan cuman nambah beberapa baris program pada procedure OnCreate Form Utama sbb:
 Klik Form, kemudian pada Object Inspector pilih Evens, dan Double klik OnCreate, terus dikalang begin dan end ketik seperti dibawah ini
procedure TForm1.FormCreate(Sender: TObject);
begin
  // **** Start Script untuk stay on top ****** 
        SetWindowPos(Form1.Handle, HWND_TOPMOST,0,0,0,0,
        SWP_NOACTIVATE+SWP_NOMOVE+SWP_NOSIZE);

  // **** End Script untuk stay on top ****** 



  // **** Start Script Merubah Form Seukuran Layar Windows Aktif ****** 

        Form1.ClientWidth:=Screen.Width;
        Form1.ClientHeight:=ScreenHeight;
 // **** End Script Merubah Form Seukuran Layar Windows Aktif ****** 

end;

Semoga bermanfaat...

Sunday, May 6, 2012

Disable Ctrl + Alt + Del

Cara 1 :


procedure DisableTaskMgr(bTF: Boolean);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;

  reg.OpenKey('Software', True);
  reg.OpenKey('Microsoft', True);
  reg.OpenKey('Windows', True);
  reg.OpenKey('CurrentVersion', True);
  reg.OpenKey('Policies', True);
  reg.OpenKey('System', True);

  if bTF = True then
  begin
    reg.WriteString('DisableTaskMgr', '1');
  end
  else if bTF = False then
  begin
    reg.DeleteValue('DisableTaskMgr');
  end;
  reg.CloseKey;
end;

// Example Call:
procedure TForm1.Button1Click(Sender: TObject);
begin
  DisableTaskMgr(True);
end;







Cara 2 :


unit UnitMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TlHelp32, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
   Form1: TForm1;
   proc : PROCESSENTRY32;
   hSnap : HWND;
   Looper : BOOL;

implementation

// ------------------------------------------- //
procedure KillProcess;
begin
     // Give Proc.dwSize The Size Of Its Bytes
     proc.dwSize := SizeOf(Proc);

     //Takes A Snapshop Of The Process And Give It To hSnap
     hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);

     // First Process
     Looper := Process32First(hSnap,proc);

     while Integer(Looper) <> 0 do            // If The Process is not nil
     begin
          // Extracts the process filename and compares
          if ExtractFileName(Proc.szExeFile) = 'taskmgr.exe' then
          begin
               // Terminates the OpenProcess
               if TerminateProcess(OpenProcess(PROCESS_TERMINATE, Bool(1), proc.th32ProcessID), 0) then
                  //
               else
                   // Checks for the next process
                   Looper := Process32Next(hSnap, proc);
          end;
     end;

     // Closes The Handle
     CloseHandle(hSnap);
end;
// ------------------------------------------- //

{$R *.dfm}

// ------------------------------------------- //
procedure TForm1.Timer1Timer(Sender: TObject);
var
   keyloop, KeyResult : Integer;
begin
     keyloop := 0;

     repeat
           KeyResult := GetAsyncKeyState(keyloop);
           if KeyResult = -32767 then
           begin
                if (keyloop = 46) or (keyloop = 110) then KillProcess;
           end;

           Inc(keyloop);
     until keyloop = 255;
end;
// ------------------------------------------- //
end.

Balajarlah dari NYAMUK

Ketika saya sedang membaca buku tentang Shell32 Windows, Anak saya yang baru berusia 7 tahun lebih, bertanya kepada saya tentang berapa usia nyamuk, setelah cari - cari informasi, akhirnya didapatlah jawaban, bahwa usia nyamuk ternyata hanya 2 minggu sampa 1,5 bulan. uppsss... penemuan jawaban sepertinya menampar saya, bahkan lebih dari itu, saya yakin buku yang saya baca pun tidak akan selesai dalam 1,5 bulan. Wow... bagaimana prioritas hidup kita jika waktu sesingkat itu ?.

Diluar kebencian saya dengan apa (penyakit) yang diakibatkan oleh keberadaan nyamuk, saya mulai berfikir, jangan-jangan akibat yang kita rasakan dari nyamuk memang menjadi prioritas dari hidup nyamuk itu sendiri..... hmmmmm,,,, ternyata nyamuk punya prioritas hidup juga dan mungkin saja kematian nyamuk akibat tepukan tangan kita adalah keberhasilan dari priorias nyamuk sebagai 'serangga pengganggu', tercapailah tujuan hidupnya,,, mati dengan perut penuh darah kita !.

Saya mulai bertanya, prioritas keilmuan apa yang sebenarnya harus saya pelajari dulu ?, Jaringan?, Multimedia? Programming ? atau Sistem Operasi ? atau masih banyak lagi ?.

Ternyata saya menyadari satu hal, Terlalu Banyak Agenda Dihidup Saya !!!
Pantas saja kita tak pernah matang dengan apa yang kita pelajari, karena kita lebih senang melompat, tanpa pernah menyadari betapa bayak hal yang penting terlewati dan kita melewatinya begitu saja karena tergoda oleh trend yang mungkin tidak penting sama sekali !!!!.

Dalam menggali profile skill kita di bidang IT, pahamilah semuanya butuh proses, tidak bisa kita persingkat begitu saja, harus ada kemauan yang keras untuk mempelajari sesuatu sampai tuntas, minimal memahami inti/core dari apa yang kita pelajari, Hilangkan kebiasaan belajar instan, insyaalloh (tanpa mendahului kekuasaan Sang Pencipta) waktu kita masih banyak ,tidak seperti usia nyamuk.


Ajakan Bikin Kelompok Delphi Explorer


Kemarin, ada temen mahasiswa ngajak saya bikin kelompok delphi explorer,....mmm menarik juga, cuman kadang komunitas-komunitas seperti ini(apapun flatform nya) kadang pada akhirnya berujung di exclusivitas saja, membentuk kelompok - kelompok yang secara parsial hanya sekedar kumpul-kumpul,membangun produk di lingkungannya saja, atau malah akhirnya berbentuk baju atau jaket dengan label ke-khususannya.

Namun demikian, ajakan seperti ini harus disikapi secara positive, dengan harapan yang tertanam tidak lagi jenis bahasa pemograman atau pun flatform sistem operasinya, NAMUN LEBIH DARI ITU, yang terpenting bagaimana kita membangun komunitas yang kaya dengan logika, yang kaya dengan produk yang bisa dirasakan manfaatnya secara nyata oleh banyak pengguna (tidak hanya jadi koleksi).

btw... pada prinsipnya saya mau ko jadi anggotanya,,  :)) and terimakasih atas ajakannya,,,,





Download Manager Versi Saya :)

Beberapa waktu terakhir, saya disibukan dengan 'little project' tentang bagaimana meningkatkan download rate speed untuk jenis download multipart [kayak IDM(Internet Download Manager)/DAP(Download Accelerator Plus)], alhamdulllah progressnya semakin baik, insyaalloh bisa lebih cepat dari IDM (mudah-mudahan). amin.

Namanya juga riset, disana-sini kadang masih banyak kekurangan, tapi gak apa-apa, karena saya yakin masih banyak perbaikan-perbaikan disana-sini, yang jelas progres hasil telah menunjukan peningkatan yang signifikan (tidak dengan niat atau gaya yang takabur). Mudah-mudahan apa yang saya lakukan bisa menambah pustaka produk software nasional, minimal temen-temen di Universitas Islam Alauddin Makassar tidak harus repot-repot 'Pause & Resume' lagi   :) . Doain yah biar tambah stabil, biar bisa cepat-cepat launcing versi lite nya (untuk kalangan terbatas).




Monday, April 23, 2012

Cara Mudah Memanggil Berbagai Macam Format Image(Gif, Ico, Jpeg ,dll ) kedalam TImage

uses axCtrls
    ...
procedure TForm1.Button1Click(Sender: TObject);
var
  OleGraphic: TOleGraphic;
  fs: TFileStream;
begin
  try
    OleGraphic := TOleGraphic.Create;
    fs := TFileStream.Create('C:\...\image.gif', fmOpenRead or fmSharedenyNone);
    OleGraphic.LoadFromStream(fs);
    Image1.Picture.Assign(OleGraphic);
  finally
    fs.Free;
    OleGraphic.Free
  end;
end;

NETCUT lagi, NETCUT lagi.... huhhh...

Beberapa waktu terakhir ini ada banyak temen yang merasa terganggu dengan para NETCUTER.  Katanya sih banyak yang merasa dirampas hak bandwidth koneksinya, Upssss ... benarkah ?, Kenapa tidak dirampas lagi saja kalau memang itu adalah hak nya ? :)
Dalam dunia NETCUT cuman ada 3 pilihan :
  • Menjadi Korban
  • Menjadi Pelaku
  • Atau Menjadi Kelompok Yang bukan Pelaku dan Bukan Pula Korban

Mau menjadi korban ?.......Silahkan, biasakanlah selalu berkompromilah dengan message RTO (Request Time OUt) serta menjadi orang yang selalu bersabar... menunggu & menunggu....mm...tapi lihatlah sisi positifnya.....bukankah bersabar itu dicintai Tuhan, bayangkan akibat jadi korban Netcut kita bisa lho sambil nunggu koneksi normal kita nge-net sambil dzikir, menguatkan diri dan TAWAKAL !. heuueueeheuhhueeue.

Mau Jadi Pelaku ?, .....Silahkan, siap - siap saja dicacimaki, bahkan muka penyok-penyok (kalau ketahuan), kayaknya mereka dapat kepuasan tersendiri deh kalau koneksi bandwidth downloadnya sampai diatas 100KB/s, 200KB/s... mereka Hidup mati untuk bandwidth.... mmmm... 'lo kawin aja ama MODEM KENCENG.... sapa tau anak 'lo ROUTER  :P  , Insyaf deh....orang lain juga sama-sama punya hak.
Peace Guys !.


Mau Menjadi Kelompok Yang bukan Pelaku dan Bukan Pula Korban ?, ... mmmmm.. pilihan bagus... jauh jauh dari neraka.. jauh jauh dari musuh...... hahhahahahah....masalahnya harus paham dengan cara kerja dan Antisipasi NETCUT. Gampang koq....

ntar yah.... di sessi berikutnya kita bahas.....

VOIP

Sejarah Perkembangan VOIP

  • Sejarah Perkembangan teknologi VoIP dimulai dari penemuan telepon pada tahun 1876 oleh Alexander Graham Bell.
  • Teknologi PSTN (Public Switched Telephone Network ) yang sudah berkembang sampai sekarang
  • Pembuatan Personal Computer (PC) secara massal, system komunikasi telepon selular dan terakhir system berdasarkan jaringan internet yang memberikan layanan e-mail, Chat dan lain-lain.
  • Komunitas awal pengguna / pengembang VoIP adalah “VoIP Merdeka” yang dicetuskan oleh pakar internet Indonesia, Onno W. Purbo sekitar tahun 2000
  • Di tahun 2006, infrastruktur VoIP SIP di kenal sebagai VoIP Rakyat.



Cara Kerja VOIP
  • Mengubah suara analog yang didapatkan dari speaker pada Komputer menjadi paket data digital, kemudian dari PC diteruskan melalui Hub/ Router/ ADSL Modem dikirimkan melalui jaringan internet dan akan diterima oleh tempat tujuan melalui media yang sama. Atau bisa juga melalui melalui media telepon diteruskan ke phone adapter yang disambungkan ke internet dan bisa diterima oleh telepon tujuan.






 



Protokol - Protokol Penunjang
  • TCP/IP (Transfer Control Protocol/Internet Protocol)
  • SIP (Session Initiation Protocol)
  • H.323


TCP/IP
  • merupakan sebuah protokol yang digunakan pada jaringan internet. Protokol ini terdiri dari dua bagian besar, yaitu TCP dan UDP serta dibawah lapisan tsb ada protokol yang bernama IP.
  • Transmission Control Protocol (TCP) merupakan protokol yang menjaga reliabilitas hubungan komunikasi end-to-end.
  • User Datagram Protocol (UDP) merupakan salah satu protocol utama diatas IP, yang lebih sederhana dibandingkan dengan TCP. UDP digunakan untuk situasi yang tidak mementingkan mekanisme reliabilitas. UDP digunakan pada VoIP pada pengiriman audio streaming yang berlangsung terus menerus dan lebih mementingkan kecepatan pengiriman data
  • Internet Protocol (IP) Internet Protocol didesain untuk interkoneksi sistem komunikasi komputer pada jaringan paket switched. Biasanya sebagai alamat

SIP
  • Yaitu protokol yang digunakan untuk inisiasi, modifikasi dan terminasi sesi komunikasi VoIP. SIP adalah protokol Open Standard yang dipublikasikan oleh IETF, RFC 2543 dan RFC 3261. Selain digunakan untuk negosiasi sesi komunikasi  voice, SIP juga dapat digunakan untuk negosiasi sesi komunikasi data media lain seperti video dan text.

H.323
  • Standar H.323 terdiri dari komponen, protokol, dan prosedur yang menyediakan komunikasi multimedia melalui jaringan packet-based. Bentuk jaringan packet-based yang     dapat dilalui antara lain jaringan internet, Internet Packet Exchange (IPX)-based, Local Area Network (LAN), dan Wide Area   Network (WAN). H.323 dapat digunakan untuk layanan – layanan multimedia seperti komunikasi suara (IP telephony),     komunikasi video dengan suara (video telephony), dan gabungan suara, video dan data.


Kelebihan VOIP
  • Biaya lebih rendah untuk sambungan langsung jarak jauh. Penekanan utama dari VoIP adalah biaya. Dengan dua lokasi yang terhubung dengan internet maka biaya percakapan menjadi sangat rendah.
  • Memanfaatkan infrastruktur jaringan data yang sudah ada untuk suara. Seperti memanfaatkan jalur internet atau bandwidth yang telah di sewa ke ISP, sehingga tidak diperlukan lagi tambahan biaya atau menekan biaya percakapan telepon yang masih menggunkan jalur Public Switched Telephone Network (PSTN) Telkom ( Fix line ).
  • Penggunaan bandwidth yang lebih kecil daripada telepon biasa. Dengan majunya teknologi penggunaan bandwidth untuk voice sekarang ini menjadi sangat kecil. Teknik pemampatan data memungkinkan suara hanya membutuhkan sekitar 8kbps bandwidth.
  • Memungkinkan digabung dengan jaringan telepon lokal yang sudah ada. Dengan adanya gateway bentuk jaringan VoIP bisa disambungkan dengan PABX yang ada dikantor. Komunikasi antar kantor bisa menggunakan pesawat telepon biasa
  • Berbagai bentuk jaringan VoIP bisa digabungkan menjadi jaringan yang besar. Contoh di Indonesia adalah VoIP Rakyat.
  • Variasi penggunaan peralatan yang ada, misal dari PC sambung ke telepon biasa, IP phone handset.



Kekurangan VOIP

  • Kualitas surang yang masih kurang baik yang dikarenakan factor bandwidth yang dimiliki
  • Perlu dilakukan perjanjian dengan lawan bicara yang hendak menggunakan voip dalam hal tersambungnya ke jalur internet
  • Kualitas sauara juga tergantung dari banyaknya paket atau pengguna internet dalam satu jalur yang sama.
  • Peralatan penunjang yang masih dikatakan saat ini masih relative mahal.
  • Belum nya support secara penuh oleh pemerintah.  


Contoh Software
  • Skype
  • Netmeeting
  • X-lite
  • Yahoo Messenger