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 TClientSocket TServerSocket TWebDispatcher TPageProducer TQueryTableProducer TDataSetTableProducer TDataSetPageProducer TCppWebBrowser

Penggunaan Winsock untuk aplikasi client Winsock untuk aplikasi Server Data modul untuk perluasan Web Sesver Untuk konversi HTML tamplate ke dokumen HTML Konversi daari Query ke tabel HTML Mangambil konversi dari TDataSet ke dalam Tabel HTML Mangambil konversi dari TDataSet ke dalam dokumen HTML Untuk Web Browser terdapat pada aplikasi client

Komponen TNMDayTime TNMMsg TNMMSGServ TNMEcho TNMFTP TNMHTTP TNMNNTP TNMStrm T NMStrmServ TNMPOP3 TNMSMTP TNMTime TNMUDP

Penggunaan mengambil tanggal dan jam dari server Internat atau intranet Mengirim pesan Text ASCII antara internet dan intranet menggunakan protokol TCP/IP Menciptakan proses Server pesan TNMMsg Mengirim pesan Text ke Internet echo Menciptakan FTP client HTTP tranfer antara WWW membaca dan mengirim dari internet news articles pada internet dan intranet news mengirim straem ke straem server antara internat atau intranet Menciptakan Stream server untuk membaca stream antara Internet atau intranet Menciptakan aplikasi client untuk membaca e-mail menggunakan protokol POP3 Menciptakan aplikasi Client untuk mengirim e-mail menggunakan protokol SMTP Mengambil tanggal dari Internet atau Intranet Implementasi dari User Datafgam Protocol (UDP) untuk mengirim paket Datagram antara Internet atau intranet. deckode URL ke dalam string terbaca oleh user atau encode string ke URL encode atau decode MIME atau dokumen uuencode dasar kelas untuk beberapa komponen soket FastNet dasar kelas untuk mebuat multitread server Internet mangabil informasi siapa user dari Internet finger menggunakan Finger Protokol.

TNMURL TNMUUProcessor TPowersock TNMGeneralServer TNMFinger 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 Form ServerSocket Label Edit Button Button Memo 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 : Properti Name Name Name Caption Name Text Name Caption Name Caption name Nilai Form1 MyServer Label1 Port EditPort 1971 ButtonStart Start ButtonStop Stop Memo1

//--------------------------------------------------------------------------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 #include #include #include #include #include

//--------------------------------------------------------------------------<Classes.hpp> <Controls.hpp> <StdCtrls.hpp> <Forms.hpp> <ScktComp.hpp> <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 Form Label1 Label2

Properti Name Name Caption Name

Nilai Form1 Label1 Nama user Label2

Label1 Edit Edit Edit ClientSockset Memo Memo Button Button

Caption Name Caption Name Name Name Name Name Name Name Caption Name Caption

Port Label3 Nama user EditUser EditPort EditServer MySocket MemoIn MemoOut ButtonConnect Connect ButtonDisconnect 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 :

Sign up to vote on this title
UsefulNot useful