Anda di halaman 1dari 12

Protocol Internet – SMTP, FTP, HTTP, POP3

• Dengan perkembangan pemrograman Itenernet dan Client/server, akan


membutuhkan pembuatan program secara cepat.
• Suatu perangat kesatuan perangkat lunak client dan server dalam penggunaan
protokol bersama-sama.
• Protokol adalah kode yang digunakan oleh aplikasi untuk mengirim informasi
dalam standarisasi pada aplikasi lain.
• C++ Builder tersedia komponen untuk membuat program secara cepat.
Komponen tersebut terdapat pada :
• Tab Internet dan FastNet
• Sabagai contoh untuk program

Komponen Internet SMTP, FTP, HTTP, POP dan TCP/IP

Pada C++ Builder versi 3 dan 4 semua, component untuk pemrograman internet terdapat
pada satu Tab. Untuk C++ Builder versi 5 komponen dibagi menjadi 2 bagian.
Pertama bagian tab Internet
TClientSocket
TServerSocket

Komponen Penggunaan
Winsock untuk aplikasi client
TClientSocket
Winsock untuk aplikasi Server
TServerSocket
Data modul untuk perluasan Web Sesver
TWebDispatcher
Untuk konversi HTML tamplate ke dokumen HTML
TPageProducer
Konversi daari Query ke tabel HTML
TQueryTableProducer
Mangambil konversi dari TDataSet ke dalam Tabel
TDataSetTableProducer
HTML
Mangambil konversi dari TDataSet ke dalam dokumen
TDataSetPageProducer HTML
Untuk Web Browser terdapat pada aplikasi client
TCppWebBrowser
Komponen Penggunaan
mengambil tanggal dan jam dari server Internat atau
TNMDayTime
intranet
Mengirim pesan Text ASCII antara internet dan
TNMMsg intranet menggunakan protokol TCP/IP
Menciptakan proses Server pesan TNMMsg
TNMMSGServ
Mengirim pesan Text ke Internet echo
TNMEcho
Menciptakan FTP client
TNMFTP
HTTP tranfer antara WWW
TNMHTTP
membaca dan mengirim dari internet news articles
TNMNNTP pada internet dan intranet news
mengirim straem ke straem server antara internat atau
TNMStrm intranet
Menciptakan Stream server untuk membaca stream
T NMStrmServ antara Internet atau intranet
Menciptakan aplikasi client untuk membaca e-mail
TNMPOP3 menggunakan protokol POP3
Menciptakan aplikasi Client untuk mengirim e-mail
TNMSMTP menggunakan protokol SMTP
Mengambil tanggal dari Internet atau Intranet
TNMTime
TNMUDP Implementasi dari User Datafgam Protocol (UDP)
untuk mengirim paket Datagram antara Internet atau
intranet.
deckode URL ke dalam string terbaca oleh user atau
TNMURL encode string ke URL
encode atau decode MIME atau dokumen uuencode
TNMUUProcessor
dasar kelas untuk beberapa komponen soket FastNet
TPowersock
dasar kelas untuk mebuat multitread server Internet
TNMGeneralServer
mangabil informasi siapa user dari Internet finger
TNMFinger menggunakan Finger Protokol.

Contoh Program

Membuat Chat Server


Program server suatu apliaksi yang mengatur komunikasi antara client yang satu dengan
client yang lainnya.

Pilih menu File | Create New Application


Rancanglah seperti form berikut :

Tabel 1. Pengaturan properti

Kompoen Properti Nilai


Form Name Form1
ServerSocket Name MyServer
Label Name Label1
Caption Port
Edit Name EditPort
Text 1971
Button Name ButtonStart
Caption Start
Button Name ButtonStop
Caption Stop
Memo name Memo1

Menulis Kode program

Iniasilasai pada FormCreate :

• Klik pada komponen Form Tekan F11


• Object Inspector pilih tab Event
• Tekan klik ganda pada OnCreate
• Tuliskan Program berikut :

//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ConncectedList = new TStringList();
}
//---------------------------------------------------------------------------

Kejadian tombol Start ditekan


• Klik pada komponen tombol Start, tekan F11
• Object Inspector pilih tab Event
• Tekan klik ganda pada OnClick
• Tuliskan Program berikut :

//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonStartClick(TObject *Sender)
{
MyServer->Port = StrToInt(EditPort->Text);
Caption = MyServer->Port;
MyServer->Active = true;
ButtonStart->Enabled = false;
ButtonStop->Enabled = true;
EditPort->Enabled= false;
}
//---------------------------------------------------------------------------

Kejadian tombol Start ditekan


• Klik pada komponen tombol Stop, tekan F11
• Object Inspector pilih tab Event
• Tekan klik ganda pada OnClick
• Tuliskan Program berikut :

//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonStopClick(TObject *Sender)
{
MyServer->Active = false;
ButtonStart->Enabled = true;
ButtonStop->Enabled= false;
EditPort->Enabled= true;
}
//---------------------------------------------------------------------------

Menuliskan kode program untuk kopmponen TServerSocket


Membaca koneksi dari client :

• Klik pada komponen tombol MySever, tekan F11


• Object Inspector pilih tab Event
• Tekan klik ganda pada OnClientConnect
• Tuliskan Program berikut :

//---------------------------------------------------------------------------
void __fastcall TForm1::MyServerClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->RemoteAddress +" Kondisi Koneksi");
ConncectedList->AddObject(Socket->RemoteAddress,Socket);
}
//---------------------------------------------------------------------------

Katika client memutuskan koneksi


• Klik pada komponen tombol MySever, tekan F11
• Object Inspector pilih tab Event
• Tekan klik ganda pada OnClientDisconnect
• Tuliskan Program berikut :

//---------------------------------------------------------------------------
void __fastcall TForm1::MyServerClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->RemoteAddress +" Kondisi Koneksi");
SendMessage(Format("%s Koneksi Terputus.",OPENARRAY(TVarRec,
(ConncectedList->Strings[ConncectedList->IndexOfObject(
Socket)])))," Server");
ConncectedList->Delete( ConncectedList->IndexOfObject(Socket));
}
//---------------------------------------------------------------------------

Membaca pesan dari client


• Klik pada komponen tombol MySever, tekan F11
• Object Inspector pilih tab Event
• Tekan klik ganda pada OnClientRead
• Tuliskan Program berikut :
//---------------------------------------------------------------------------
void __fastcall TForm1::MyServerClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString TextIn, cName;
int iIndex;
TextIn=Socket->ReceiveText();
iIndex=ConncectedList->IndexOfObject(Socket);
if (iIndex==-1)
return;

TStringList *NamaUser = new TStringList();

if (TextIn.Pos("NamaUser=") == 1)
{
// memberikan nama user
NamaUser->Text = TextIn;
ConncectedList->Strings[iIndex]=NamaUser->Values["NamaUser"];
SendMessage(Format("%s Koneksi terputus.",OPENARRAY(TVarRec,
(NamaUser->Values["NamaUser"])))," Server");
}
else
{
// kirim pesan
cName = ConncectedList->Strings[iIndex];
SendMessage(TextIn,cName);
}
delete NamaUser;
}
//---------------------------------------------------------------------------

Tambahkan diklarasi fungsi dan variabel pada file UnitServer.h

//---------------------------------------------------------------------------
#ifndef UnitServerH
#define UnitServerH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ScktComp.hpp>
#include <sysopen.h>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
TEdit *EditPort;
TButton *ButtonStart;
TButton *ButtonStop;
TServerSocket *MyServer;
TMemo *Memo1;
void __fastcall FormCreate(TObject *Sender);
void __fastcall ButtonStartClick(TObject *Sender);
void __fastcall ButtonStopClick(TObject *Sender);
void __fastcall MyServerClientConnect(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall MyServerClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall MyServerClientRead(TObject *Sender,
TCustomWinSocket *Socket);

private: // User declarations


TStringList *ConncectedList; //anda tambahkan ini

public: // User declarations


__fastcall TForm1(TComponent* Owner);

// anda tambahkan ini


void __fastcall SendMessage(AnsiString Pesan, AnsiString Dari);

};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Implmentasi Fungsi SendMessage()

//---------------------------------------------------------------------------
void __fastcall TForm1::SendMessage(AnsiString Pesan, AnsiString
Dari)
{
for(int i=0; i<MyServer->Socket->ActiveConnections; i++)
{
if (Dari == " Server")
MyServer->Socket->Connections[i]->SendText(
Format("%s",OPENARRAY(TVarRec,(Pesan))));
else
MyServer->Socket->Connections[i]->SendText(
Format("%s dari : %s",OPENARRAY(TVarRec,(Dari,Pesan))));
}
}
//---------------------------------------------------------------------------

Aplikasi Client

• Pilih menu File | Create New Application


• Rancanglah seperti form berikut :

Kompoen Properti Nilai


Form Name Form1
Label1 Name Label1
Caption Nama user
Label2 Name Label2
Caption Port
Label1 Name Label3
Caption Nama user
Edit Name EditUser
Edit Name EditPort
Edit Name EditServer
ClientSockset Name MySocket
Memo Name MemoIn
Memo Name MemoOut
Button Name ButtonConnect
Caption Connect
Button Name ButtonDisconnect
Caption Disonnect

Katika MySoket koneksi


• Klik pada komponen tombol MySocket, tekan F11
• Object Inspector pilih tab Event
• Tekan klik ganda pada OnConnect
• Tuliskan Program berikut :
void __fastcall TForm1::MySocketConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
MemoIn->SetFocus();
MemoIn->Lines->Add("Koneksi.........");
MemoOut->SetFocus();
MySocket->Socket->SendText(EditUser->Text);
}

Katika MySoket baca


• Klik pada komponen tombol MySocket, tekan F11
• Object Inspector pilih tab Event
• Tekan klik ganda pada OnRead
• Tuliskan Program berikut :

//---------------------------------------------------------------------------
void __fastcall TForm1::MySocketRead(TObject *Sender,
TCustomWinSocket *Socket)
{
MemoIn->SetFocus();
MemoIn->Lines->Add(Socket->ReceiveText());
MemoOut->SetFocus();
}
//----------------------------------------------------------------------

Katika Tombol Connect ditekan


• Klik pada komponen tombol Connect, tekan F11
• Object Inspector pilih tab Event
• Tekan klik ganda pada OnClick
• Tuliskan Program berikut :

//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonConnectClick(TObject *Sender)
{
MySocket->Address = EditServer->Text;
MySocket->Port =StrToInt(EditPort->Text);
MySocket->Active = true;
ButtonConnect->Enabled = false;
ButtonDConnect->Enabled = true;
MemoOut->Enabled=true;

}
//---------------------------------------------------------------------------

Katika Tombol Disconnect ditekan


• Klik pada komponen tombol Disconnect, tekan F11
• Object Inspector pilih tab Event
• Tekan klik ganda pada OnClick
• Tuliskan Program berikut :

/---------------------------------------------------------------------------
void __fastcall TForm1::ButtonDConnectClick(TObject *Sender)
{
ButtonConnect->Enabled = true;
ButtonDConnect->Enabled = false;
MemoOut->Enabled=false;
}
//---------------------------------------------------------------------------

Katika user mengetikan pesan pada komponen MemoOut


• Klik pada komponen tombol MemoOut, tekan F11
• Object Inspector pilih tab Event
• Tekan klik ganda pada OnKeyPress
• Tuliskan Program berikut :

//---------------------------------------------------------------------------
void __fastcall TForm1::MemoOutKeyPress(TObject *Sender, char &Key)
{
if(Key == VK_RETURN)
{
MySocket->Socket->SendText(MemoOut->Text);
MemoOut->Lines->Clear();
Key=0;
}
}
//---------------------------------------------------------------------------

kode if(Key == VK_RETURN) adalah jika tombol enter ditekan data akan ditampilkan
pada MemoOut

File header UnitClien.h


/----------------------------------------------------------------------
-----
#ifndef UnitClientH
#define UnitClientH
//---------------------------------------------------------------------
------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ScktComp.hpp>
//---------------------------------------------------------------------
------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TEdit *EditUser;
TEdit *EditPort;
TEdit *EditServer;
TClientSocket *MySocket;
TButton *ButtonConnect;
TButton *ButtonDConnect;
TMemo *MemoOut;
TMemo *MemoIn;
TLabel *Label4;
void __fastcall ButtonConnectClick(TObject *Sender);
void __fastcall ButtonDConnectClick(TObject *Sender);
void __fastcall MySocketConnect(TObject *Sender,
TCustomWinSocket *Socket);
void __fastcall MemoOutKeyPress(TObject *Sender, char &Key);
void __fastcall MySocketRead(TObject *Sender,
TCustomWinSocket *Socket);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------
------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------
------
#endif

Cara Manguji program


Jalankan aplikasi server, setelan anda kompitalasi jadi ProjectServer.EXE klik lewat
Explorer

Klik tombol Star

Jalankan Aplikasi Client Serperti Gambar berikut :


Isikan user, no port, ip atau nama server tekan tommbol Connect
Amati pada program server :