Upload
romadhi
View
3.880
Download
2
Embed Size (px)
Citation preview
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
TClientSocketTServerSocket
Komponen Penggunaan
TClientSocketWinsock untuk aplikasi client
TServerSocketWinsock untuk aplikasi Server
TWebDispatcherData modul untuk perluasan Web Sesver
TPageProducerUntuk konversi HTML tamplate ke dokumen HTML
TQueryTableProducerKonversi daari Query ke tabel HTML
TDataSetTableProducerMangambil konversi dari TDataSet ke dalam Tabel HTML
TDataSetPageProducerMangambil konversi dari TDataSet ke dalam dokumen HTML
TCppWebBrowser Untuk Web Browser terdapat pada aplikasi client
Komponen Penggunaan
TNMDayTimemengambil tanggal dan jam dari server Internat atau intranet
TNMMsgMengirim pesan Text ASCII antara internet dan intranet menggunakan protokol TCP/IP
TNMMSGServMenciptakan proses Server pesan TNMMsg
TNMEchoMengirim pesan Text ke Internet echo
TNMFTPMenciptakan FTP client
TNMHTTPHTTP tranfer antara WWW
TNMNNTPmembaca dan mengirim dari internet news articles pada internet dan intranet news
TNMStrmmengirim straem ke straem server antara internat atau intranet
T NMStrmServMenciptakan Stream server untuk membaca stream antara Internet atau intranet
TNMPOP3Menciptakan aplikasi client untuk membaca e-mail menggunakan protokol POP3
TNMSMTPMenciptakan aplikasi Client untuk mengirim e-mail menggunakan protokol SMTP
TNMTimeMengambil tanggal dari Internet atau Intranet
TNMUDP Implementasi dari User Datafgam Protocol (UDP) untuk mengirim paket Datagram antara Internet atau intranet.
TNMURLdeckode URL ke dalam string terbaca oleh user atau encode string ke URL
TNMUUProcessorencode atau decode MIME atau dokumen uuencode
TPowersockdasar kelas untuk beberapa komponen soket FastNet
TNMGeneralServerdasar kelas untuk mebuat multitread server Internet
TNMFingermangabil informasi siapa user dari Internet finger menggunakan Finger Protokol.
Contoh Program
Membuat Chat ServerProgram 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 NilaiForm Name Form1ServerSocket Name MyServerLabel Name
CaptionLabel1Port
Edit NameText
EditPort1971
Button NameCaption
ButtonStartStart
Button NameCaption
ButtonStopStop
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 TServerSocketMembaca 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 NilaiForm Name Form1Label1 Name
CaptionLabel1Nama user
Label2 NameCaption
Label2Port
Label1 NameCaption
Label3Nama user
Edit Name EditUserEdit Name EditPortEdit Name EditServerClientSockset Name MySocketMemo Name MemoInMemo Name MemoOutButton Name
CaptionButtonConnectConnect
Button NameCaption
ButtonDisconnectDisonnect
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 declarationspublic: // 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 :