DISUSUN OLEH: TIM PENYUSUN NETWORK PROGRAMING II
TEKNIK KOMPUTER AKADEMI MANAJEMEN INFORMATIKA DAN KOMPUTER JAKARTA 2014 1
Kata Pengantar
Puji dan syukur penulis panjatkan kepada Allah SWT karena atas berkat dan rahmat-Nya Modul Praktikum Network Programing II (C#) ini dapat penulis susun. Modul ini merupakan kelanjutan materi praktikum Network Programming I (C# dasar) yang telah dipelajari pada semester terdahulu pada Program Studi Diploma Tiga AMIK BSI jurusan Teknik Komputer. Modul praktikum ini ditujukan untuk mahasiswa program studi Diploma III AMIK Bina Sarana Informatika jurusan Teknik Komputer, dengan pembahasan materi yang berhubungan dengan Pemprograman berbasis Networking. Dengan memanfaatkan Software program tersebut, mahasiswa diharapkan menciptakan program-program Network. Bahasa pemrograman C# merupakan bahasa pemrograman yang berorientasi objek, oleh karena itu pembahasan pada modul praktikum ini hanya menggunakan fungsi-fungsi pustaka yang dimiliki oleh Visual Studio 2010. Program C# dapat di aplikasikan dengan dengan perangkat keras (Hardware) dan dapat pula di sandingkan dengan sistem operasi yang ada sehingga program ini dapat lebih di exploritasi untuk menciptakan banyak program-program berbasis sains. Guna penyempurnaan modul praktikum ini pada masa yang akan datang, penulis berharap pembaca dan semua pihak yang menggunakan modul ini dapat memberikan saran-saran dan kritik yang sifatnya konstruktif. Akhir kata, penulis mengucapkan terima kasih kepada Bapak Ir. Naba Aji Notoseputro selaku Direktur Bina Sarana Informatika, Bapak Anton,M.Kom selaku Ketua Jurusan Teknik Komputer dan rekan-rekan Konsorsium Teknik Komputer serta semua pihak yang telah membantu penyusunan penyusunan Modul Praktikum Network Programing II (C#) ini.
Jakarta, Februari 2014
Penulis
2
PERTEMUAN I GUI
Refresh Ulang Mengenai Form dan pembuatan Fungsi
Dalam C# sebuah form terbentuk dalam sebuah class,sebenarnya memili ki dua buah class. class . Contoh dimisalkan terdapat sebuah form dengan nama “form1.cs” maka form1.cs memiliki dua class yaitu “form1.cs” dan “form1.cs[design] “form1.cs[design]”. ”. ketika kita menggunakan tampilan desain (GUI) maka class yang digunakan adalah class utama yaitu “form1.cs[design]”, sedangkan semua hal yang berhubungan dengan kode dalam desain class tersebut terletak pada “form1.cs”. Mari kita ambil contoh, Buatlah sebuah form dan berikan dua buah button beserta satu label di tengah.
Kemudian dengan dua buah tombol tersebut kita akan merubah tampilan dari Label yang telah berisi text output. Jika tombol 1 di tekan, maka Output berubah menjadi “Tombol 1 aktif”, dan jika tombol 2 ditekan Output berubah Output berubah menjadi "Tombol 2 aktif” aktif”.. Seperti yang telah dijelaskan sebelumnya, tampilan design di atas adalah sebuah class form utama yang bernama “form1.cs[design]”, sedangkan semua yang berhubungan dengan dengan kode berada pada “form1.cs”,
3
Gambar di atas adalah contoh list kode yang berada pada “form1.cs[design]”,untuk “form1.cs[design]”,untuk mengaksesnya bisa dengan mengklik 2x pada form design dan telah berisi syntax sebagai default dari semua design yang telah dibuat. Dalam “form1.cs” inilah kita bisa menambahkan fungsi yang tidak terdapat pada default form yang disediakan. Contoh kita akan membuat sebuah fungsi dimana fungsi pertama bernama “tombol1” dan fungsi kedua bernama “tombol2”, “tombol2” , Di antara public partial class Form1 Form1 : : Form { } Kita dapat menyisipkan sebuah fungsi, contoh: void tombol1() void tombol1() { l_output.Text = "Tombol 1 Aktif"; Aktif" ; } void tombol2() void tombol2() { l_output.Text = "Tombol 2 Aktif"; Aktif" ; }
4
Sehingga dalam event klik button kita cukup memanggil fungsi yang telah dibuat sebelumnya. private void t_satu_Click( void t_satu_Click(object object sender, sender, EventArgs EventArgs e) e) { tombol1(); } private void t_dua_Click( void t_dua_Click(object object sender, sender, EventArgs EventArgs e) e) { tombol2(); } Ketika di klik hasilnya sama dengan dengan langsung mengetik dalam button button namun kali ini kita hanya memanggil fungsi nya saja.
Dalam pengembangan selanjutnya kita dapat membuat fungsi tambahan seperti aktif maupun nonaktif sebuah button atau pun textbox dalam form. Dari form yang ada tambahkan tambahkan dua button bernama “INPUT” dan “INPUT” dan “BERSIH”. “BERSIH”.
Pada fungsi berikutnya kita akan menambahkan fungsi baru yaitu “aktif”, “aktif”, ”nonaktif”, ”bersih”.
5
Pada fungsi “aktif” maka semua tombol kecuali input akan menjadi aktif, dan pada fungsi “nonaktif” maka semua tombol kecuali input akan menjadi nonaktif. Sedangkan pada fungsi “ bersih” bersih” akan berisi label output memiliki text output. void aktif() void aktif() { bt_satu.Enabled = true true;; bt_dua.Enabled = true true;; bt_bersih.Enabled = true true;; bt_input.Enabled = false false;; } void nonaktif() void nonaktif() { bt_satu.Enabled = false false;; bt_dua.Enabled = false false;; bt_bersih.Enabled = false false;; bt_input.Enabled = true true;; } void bersih() void bersih() { l_output.Text = "OUTPUT" "OUTPUT";; } Dan buat tambahkan sebuah fungsi default bernama form load, dengan cara mengklik 2x pada form. private void Form1_Load( void Form1_Load(object object sender, sender, EventArgs EventArgs e) e) { nonaktif(); bersih(); } Form load adalah sebuah fungsi yang disediakan oleh C# yang akan di eksekusi setiap kali program dijalankan pertama kali, pada contoh di atas berikan fungsi “nonaktif();” dan “bersih();” dikarenakan pada setiap kali form di jalankan di jalankan tampilan defaultnya hanya tombol input saja yang dapat di klik.
6
Ketika tombol input di klik maka kode yang di eksekusi adalah private void bt_input_Click( void bt_input_Click(object object sender, sender, EventArgs EventArgs e) e) { aktif(); }
Dan ketika bersih di klik maka kode yang di eksekusi adalah private void bt_bersih_Click( void bt_bersih_Click(object object sender, sender, EventArgs EventArgs e) e) { bersih(); nonaktif(); }
7
PERTEMUAN II GUI II
Manipulasi objek dan penggunaan percabangan percabangan
Dari form yang sebelumnya pada pertemuan I, mari coba kita ta mbahkan satu buah textbox yang akan digunakan menjadi sebuah input perubah perubah atribut dari output.
Pada desain di atas, sengaja digunakan textbox untuk merubah atribut dari label yang akan menampilkan output. Dengan itu berarti kita butuh membuat sebuah fungsi yang akan menampilkan atau merubah hasil dari apa yang diketikkan pada input. Buatlah sebuah fungsi baru dimisalkan “perubah” dan berisi konfigurasi seperti berikut: void perubah() { string isi = t_input.Text.ToUpper(); if (isi == "MERAH") { l_output.ForeColor = Color.Red; } else if (isi == "BIRU") { l_output.ForeColor = Color.Blue; } else if (isi == "HIJAU") { l_output.ForeColor = Color.Green; } else if (isi == "TEBAL") { l_output.Font= new Font(l_output.Font, FontStyle.Bold); } else if (isi == "MIRING") { 8
l_output.Font = new Font(l_output.Font, FontStyle.Italic); } else { l_output.ForeColor = Color.Black; l_output.Font = new Font(l_output.Font, FontStyle.Regular); } } Pada baris listing program di atas, forecolor digunkan sebagai perubah warna pada label. Sedangkan fontstyle digunakan untuk merubah gaya dari tulisan entah itu di tebal kan atau di cetak miring. mir ing. Dikarenakan penambahan sebuah textbox baru, maka fungsi fungsi “aktif”,”nonaktif”,dan “bersih” berubah sedikit menjadi void aktif() void aktif() { bt_satu.Enabled = true true;; bt_dua.Enabled = true true;; bt_bersih.Enabled = true true;; bt_input.Enabled = false false;; t_input.Enabled = true true;; } void nonaktif() void nonaktif() { bt_satu.Enabled = false false;; bt_dua.Enabled = false false;; bt_bersih.Enabled = false false;; bt_input.Enabled = true true;; t_input.Enabled = false false;; } void bersih() void bersih() { l_output.Text = "OUTPUT" "OUTPUT";; t_input.Text = "" "";; } Kemudian pada textbox menggunakan event change dan memanggil fungsi perubah agar setiap kali di ketik langsung terjadi perubahan perubahan seperti di bawah ini: private void t_input_TextChanged( void t_input_TextChanged(object object sender, sender, EventArgs EventArgs e) e) { perubah(); }
9
Tugas dan Soal a. Dari contoh materi yang telah dibahas, buatlah desain form seperti di bawah ini:
b. Dari soal di atas buatlah fungsi “aktif ()”, ()”, ”nonaktif ()”, ()”, ”bersih() ”bersih()””! c. Isi dari combobox warna dan style ditambahkan dengan fungsi “isicombo ()” ()” yang akan di eksekusi pada saat form_load! d. Untuk combobox warna dan style buatlah fungsi “warna ()” ()” dan fungsi “style() “style()””! e. Ketika isi dari combobox dipilih maka label akan berubah sesuai dengan isi yang terpilih
10
PERTEMUAN III System NET Framework
Framework .NET merupakan suatu komponen Windows yang terintegrasi dan dibuat agar dapat menjalankan berbagai macam aplikasi .NET, termasuk pengembangan aplikasi Web Service yang mempergunakan mempergunakan XML (extensible markup language). Beberapa bahasa pemrograman yang sudah cukup dikenal mengadopsi teknologi .NET ini antara lain, Visual Basic dan C++.Kemudian C# (C Sharp). Fasilitas Framework .NET 1. Menyediakan tools dan teknologi untuk membangun aplikasi terdistribusi. 2. Semua bahasa pemrograman yang tergabung dalam teknologi .NET dapat saling berkomunikasi Tujuan Framework .NET a) Untuk menyediakan environment kerja yang konsisten bagi bahasa pemrograman yang berorientasi objek (object-oriented programming - OOP). b) Untuk menyediakan lingkungan kerja di dalam mengeksekusi kode yang dapat meminimaliasi proses penyebaran software (software deployment) dan menghindari konflik penggunaan versi software yang di buat. c) Untuk menyediakan environment kerja yang aman dalam hal pengeksekusian kode. d) Untuk menyediakan lingkungan kerja yang dapat mengurangi masalah pada persoalan performa dari kode atau dari lingkungan interpreter-nya. e) Membuat para developer lebih mudah mengembangkan berbagai macam jenis aplikasi yang lebih bervariasi, seperti aplikasi berbasis windows dan aplikasi berbasis web. f) Membangun semua komunikasi yang ada di dalam standar industri untuk memastikan bahwa semua kode aplikasi yang berbasis Framework .NET dapat berintegrasi dengan berbagai macam kode aplikasi lain. g) Untuk memenuhi tujuan tersebut maka diciptakan berbagai macam bahasa pemrograman berbasis .NET. h) Dapat Digunakan VB, C#, J#, C++, Perl, ASD dan lain-lain. Kelebihan Utama Framework .NET a. Mudah Garbage Collector yang bertanggung jawab untuk mencari dan membuang objek yang sudah tidak terpakai secara otomatis. b. Efisien Efisien dalam hal waktu pembuatan aplikasi atau juga efisien dalam hal lain, seperti biaya (cost). c. Konsisten Dengan adanya BCL, maka kita bisa menggunakan objek atau Class yang dibuat untuk aplikasi berbasis windows pada aplikasi berbasis web. 11
d. Produktivitas Produktivitas para developer, produktivitas suatu perusahaan.
akan
berdampak
pada
meningkatnya
Arsitektur Framework .NET
Komponen Utama Framework .NET
1. Common Language Runtime (CLR) Konsep paling penting dalam .NET framwork adalah keberaaan dan fungsionalitas .NET Common Language Runtime (CLR). CLR adalah sebuah layer atau lapisan framework yang berada pada sistem operasi dan menangani eksekusi dari aplikasi .NET. Program yang nantinya akan dibuat tidak terkomunikasi langsung dengan Sistem Operasi, tetapi melalui CLR terlebih dahulu. 2. NET Framework Class Library (FCL) atau Base Class Library (BCL). (BCL). FCL merupakan library standar besar yang dikemas dalam satu bahasa pemrograman. Bagian terbaik dari library ini adalah peggunaan teknik pemrograman object oriented yang membuat teknik pengaksesan dan penggunaannya menjadi sangat sederhana. Anda dapat menggunakan FCL pada program yang akan dibuat hanya seperti menggunakan kelas-kelas lainnya. Anda bahkan dapat menerapkan teknik inheritance dan polimorfisme pada kelas FCL ini Tabel Info Framework
Microsoft.Win32
Class yang digunakan untuk menangani event yang berkaitan dengan OS dan class yang terdapat pada Registry
System
Dasar class .NET yang biasa digunakan untuk tipe data dan konversi nya
12
Digunakan untuk perintah list,queues, bit arrays, dan arrays, dan string string collection
System.Collections
System.Data
Digunakan untuk penggunaan struktur databaseADO.NET database ADO.NET
System.Data.OleDb
Digunakan untuk penggunaan struktur database OLE DB .NET
System.Drawing
Penyedia akses pada fungsi dasar grafis
System.IO
Digunakan pada sistem data streams dan streams dan files (Input Output streams Output streams))
System.Management
Digunakan untuk infrastruktur Windows Windows Instrumentation (WMI) Instrumentation (WMI)
mengakses Management
System.Net
Digunakan untuk mengakses fungsi jaringan Windows
System.Net.Sockets
Digunakan untuk mengakses antarmukaWindows antarmuka Windows Sockets (Winsock) Sockets (Winsock)
System.Runtime.Remoting
Digunakan untuk mengakses Windows distributed computing platform
System.Security
Digunakan untuk mengakses sistem keamanan pada CLR
Class penyedia encoding unicode, UTF-7, UTF-8
System.Text
ASCII,
Digunakan untuk membuat program yang bersifat multi-threading
System.Threading
13
Memungkinkan sebuah event pada tertentu
System.Timers
Memungkinkan server dan web
System.Web
penggunaan
Digunakan untuk mengirim pesan email
System.Windows.Forms
Class yang dapat digunakan untuk pembuatan aplikasi dasar windows dengan menggunakan standard Windows graphical interface
Digunakan untuk menyediakan layanan pemrosesan tipe file XML
Aplikasi Simple notepad
Aplikasi ini di buat untuk membuka file yang berextension .txt
Adapun komponen nya adalah: NO
Component Name
Text
Name
1
RichText Box Button 1 Button 2
Buka File Simpan
rt_input bt_open bt_save
2 3
fungsi
System.Web.Mail
System.XML
pemanggilan interval waktu
14
using System; using System; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel; using System.Data; using System.Data; using System.Drawing; System.Drawing; using System.Text; using System.Text; using System.Windows.Forms; System.Windows.Forms; using Microsoft.Win32; Microsoft.Win32; using System.IO; using System.IO; namespace aplikasi_jaringan_net_3_ aplikasi_jaringan_net_3_0 0 { publicpartialclassForm1 publicpartialclass Form1 : : Form { public Form1() public Form1() { InitializeComponent(); this.StartPosition this .StartPosition = FormStartPosition FormStartPosition.CenterScreen; .CenterScreen; this.FormBorderStyle this .FormBorderStyle = FormBorderStyle FormBorderStyle.FixedSingle; .FixedSingle; this.MaximizeBox this .MaximizeBox = false false; ; this.MinimizeBox this .MinimizeBox = false false; ; } void bersih() void bersih() { rt_input.Text = "" ""; ; } privatevoid Form1_Load(object privatevoid Form1_Load( object sender, sender, EventArgs EventArgs e) e) { bersih(); } privatevoid bt_open_Click( bt_open_Click(object object sender, sender, EventArgs EventArgs e) e) { if (rt_input.Text!= (rt_input.Text!="" "") ) { var pesan var pesan = MessageBox MessageBox.Show( .Show("File "File belum tersimpan, yakin ingin membuka file baru???", baru???" , "Konfirmasi" "Konfirmasi", , MessageBoxButtons.YesNo, MessageBoxButtons .YesNo, MessageBoxIcon .Warning); if (pesan if (pesan == DialogResult DialogResult.Yes) .Yes) { bukaFile(); } } else { bukaFile(); } } void bukaFile() void bukaFile() { bersih(); OpenFileDialog buka = new newOpenFileDialog OpenFileDialog (); buka.DefaultExt buka.DefaultExt = ".txt" ".txt"; ; buka.Filter = "Text Files|*.txt"; Files|*.txt" ; buka.FileName = "" ""; ;
15
//Nullable hasil = buka.ShowDialog(); if (buka.ShowDialog()!= (buka.ShowDialog()!=DialogResult DialogResult .Cancel ) { string fileTerpilih string fileTerpilih = buka.FileName; if (fileTerpilih if (fileTerpilih != "" "") ) { rt_input.LoadFile(fileTerpilih, RichTextBoxStreamType.PlainText); RichTextBoxStreamType .PlainText); } } } void simpanFile() void simpanFile() { SaveFileDialog simpan = new newSaveFileDialog SaveFileDialog(); (); simpan.Filter = "File Text|*.txt"; Text|*.txt" ; simpan.RestoreDirectory simpan.RestoreDirectory = true true; ; if (simpan.ShowDialog() if (simpan.ShowDialog() != DialogResult DialogResult.Cancel) .Cancel) { StreamWriter fileSimpan = new StreamWriter (File File.Create(simpan.FileName)); .Create(simpan.FileName)); fileSimpan.Write(rt_input.Text); fileSimpan.Dispose(); } } private void bt_save_Click( bt_save_Click( object object sender, sender, EventArgs EventArgs e) e) { simpanFile(); } } }
Penjelasan Kode program: 1. Klik menu File, pilih New Project, pilih WindowsFormsApplication,kemudian klik Ok.
2.Kemudian masuk ke lembar listing program, ketik : using Microsoft.Win32; Microsoft.Win32; using System.IO; using System.IO;
//untuk library tambahan dalam program windows 32. 3.Listing program di bawah ini menjelaskan posisi form berada di tengah, form tidak bisa dibesar/dikecilkan, dan menghikangkan tombol maximize dan minimize. public Form1() public Form1() { InitializeComponent(); this.StartPosition this .StartPosition = FormStartPosition FormStartPosition.CenterScreen; .CenterScreen; this.FormBorderStyle this .FormBorderStyle = FormBorderStyle FormBorderStyle.FixedSingle; .FixedSingle; this.MaximizeBox this .MaximizeBox = false false; ; this.MinimizeBox this .MinimizeBox = false false; ; }
4. Listing Listing program di bawah ini menjelaskan buat fungsi bersih. void bersih() void bersih() {
16
rt_input.Text rt_input.Text = "" ""; ; }
5. Listing program di bawah ini menjelaskan ketika form pertama kali dijalankan tampilan richText Box diform akan bersih. private void void Form1_Load( Form1_Load(object object sender, sender, EventArgs EventArgs e) e) { bersih();
6. Listing program di bawah ini menjelaskan buat fungsi open file/ buka file. void bukaFile() void bukaFile() { bersih(); OpenFileDialog buka OpenFileDialog buka = new newOpenFileDialog OpenFileDialog (); buka.DefaultExt buka.DefaultExt = ".txt" ".txt"; ; buka.Filter = "Text Files|*.txt"; Files|*.txt" ; buka.FileName = "" ""; ; //Nullable hasil = buka.ShowDialog(); if (buka.ShowDialog()!= (buka.ShowDialog()!=DialogResult DialogResult.Cancel .Cancel ) { string fileTerpilih string fileTerpilih = buka.FileName; buka.FileName; if (fileTerpilih if (fileTerpilih != "" "") ) { rt_input.LoadFile(fileTerpilih, RichTextBoxStreamType.PlainText); RichTextBoxStreamType .PlainText); } } }
7. Listing program di bawah ini menjelaskan digunakan buat buat tombol buka file yang yang berfungsi untuk membuka membuka file yang berada di sistem komputer/notebook. private void bt_open_Click( bt_open_Click( object object sender, sender, EventArgs EventArgs e) e) { if (rt_input.Text!= (rt_input.Text!="" "") ) { var pesan var pesan = MessageBox MessageBox.Show( .Show("File "File belum tersimpan, yakin ingin membuka file baru???", baru???" , "Konfirmasi" , MessageBoxButtons MessageBoxButtons.YesNo, .YesNo, MessageBoxIcon .Warning); if (pesan if (pesan == DialogResult DialogResult.Yes) .Yes) { bukaFile(); } } Else { bukaFile(); } }
17
8. Listing program di bawah ini menjelaskan fungsi simpan . private void bt_save_Click( bt_save_Click( object object sender, sender, EventArgs EventArgs e) e) { simpanFile(); }
9. Listing program di bawah ini menjelaskan fungsi tombol simpan yang berfungsi untuk menyimpan file yang dibuat di form. void simpanFile() void simpanFile() { SaveFileDialog simpan SaveFileDialog simpan = new newSaveFileDialog SaveFileDialog(); (); simpan.Filter = "File Text|*.txt"; Text|*.txt" ; simpan.RestoreDirectory simpan.RestoreDirectory = true true; ; if (simpan.ShowDialog() if (simpan.ShowDialog() != DialogResult .Cancel) { StreamWriter fileSimpan = new StreamWriter (File File.Create(simpan.FileName)); .Create(simpan.FileName)); fileSimpan.Write(rt_input.Text); fileSimpan.Dispose(); } }
18
PERTEMUAN IV System NET Framework II
Membuat Aplikasi Image Resizer
Aplikasi image resizer adalah aplikasi untuk mengubah ukuran gambar yang mempunyai format .JPEG. Dibawah ini langkah-langkahnya. 1.
Buatlah form design seperti dibawah ini:
2.
Atur properties setiap object diatas dengan ketentuan dibawah ini:
No 1 2 3 4 5 6 7 8 9 10
3.
Object Form1 Label1 Label2 Label3 Label4 Label5 Label6 PictureBox1 Button1 Button2
Name Form1 Label1 Label2 lb_tg_gmbr lb_lbr_gmbr Label5 Laber6 bt_simpan bt_buka Button2
Text Image Resizer Tinggi Gambar Lebar Gambar Out Out Resize Gambar % Buka Gambar Simpan Gambar
Lihat Solution Explorer pada sebelah kanan program anda, klik kanan pada Form -> Pilih View Code. 19
4. Tambahkan code dibawah ini pada project code Form anda. using System; using System; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel; using System.Data; using System.Data; using System.Drawing; System.Drawing; using System.Text; using System.Text; using System.Windows.Forms; System.Windows.Forms; namespace aplikasi_jaringan_net_3_ aplikasi_jaringan_net_3_0 0 { public partial class Form2 Form2 : : Form { privateImage private Image gambar; gambar;//di //di definisikan global public Form2() public Form2() { InitializeComponent(); this.StartPosit this .StartPosition ion =FormStartPosition FormStartPosition.CenterScreen; .CenterScreen; this.FormBorderStyle this .FormBorderStyle = FormBorderStyle FormBorderStyle.FixedSingle; .FixedSingle; this.MaximizeBox this .MaximizeBox = false false; ; this.MinimizeBox this .MinimizeBox = false false; ; t_resize.MaxLength t_resize.MaxLength = 3; t_resize.Enabled = false false; ; } privatevoid bt_buka_Click( bt_buka_Click(object object sender, sender, EventArgs EventArgs e) e) { OpenFileDialog bukaGambar = new newOpenFileDialog OpenFileDialog(); (); if (bukaGambar.ShowDialog( if (bukaGambar.ShowDialog() ) == = = DialogResult DialogResult.OK) .OK) { this.gambar this .gambar = Image Image.FromFile(bukaGambar.FileName); .FromFile(bukaGambar.FileName); bt_simpan.SizeMode bt_simpan.SizeMode = PictureBoxSizeMode.StretchImage; PictureBoxSizeMode .StretchImage; //menyesuaikan //menyesuai kan gambar sesuai dengan picturebox bt_simpan.ImageLocation bt_simpan.ImageLocation = bukaGambar.FileName; bukaGambar.FileName; //mencari lokasi gambar
20
lb_tg_gmbr.Text lb_tg_gmbr.Text = gambar.Height.ToString(); gambar.Height.ToString(); lb_lbr_gmbr.Text lb_lbr_gmbr.Text = gambar.Width.ToString(); gambar.Width.ToString(); t_resize.Enabled = true true; ; t_resize.Clear(); } } privatevoid t_resize_KeyDown( t_resize_KeyDown(object object sender, sender, KeyEventArgs KeyEventArgs e) e) { if (e.KeyCode if (e.KeyCode == Keys Keys.Enter) .Enter) { if (t_resize.Text if (t_resize.Text != "" "") ) { int persen int persen = Convert Convert.ToInt32(t_resize.Text); .ToInt32(t_resize.Text); int tinggi int tinggi = (persen * Convert.ToInt32(lb_t Convert .ToInt32(lb_tg_gmbr.Text) g_gmbr.Text)) ) / 100; int lebar int lebar = (persen * Convert.ToInt32(lb_l Convert .ToInt32(lb_lbr_gmbr.Text br_gmbr.Text)) )) / 100; lb_tg_gmbr.Text lb_tg_gmbr.Text = Convert Convert.ToString(tinggi); .ToString(tinggi); lb_lbr_gmbr.Text = Convert Convert.ToString(lebar); .ToString(lebar); } } } privatevoid button1_Click( button1_Click(object object sender, sender, EventArgs EventArgs e) e) { int tinggi int tinggi = Convert Convert.ToInt32(lb_tg_gmbr.Text); .ToInt32(lb_tg_gmbr.Text); int lebar int lebar = Convert Convert.ToInt32(lb_lbr_gmbr.Text); .ToInt32(lb_lbr_gmbr.Text); Bitmap ukuranBaru Bitmap ukuranBaru = new newBitmap Bitmap(lebar, (lebar, tinggi,System.Drawing.Imaging.PixelFormat tinggi,System.Drawing.Imaging. PixelFormat.Format24bppRgb); .Format24bppRgb); Graphics Gbr Graphics Gbr = Graphics Graphics.FromImage(ukuranBaru); .FromImage(ukuranBaru); Gbr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality System.Drawing.Drawing2D. CompositingQuality.HighSpeed; .HighSpeed; Gbr.SmoothingMode Gbr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode System.Drawing.Drawing2D. SmoothingMode.HighSpeed; .HighSpeed; Gbr.InterpolationMode Gbr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode System.Drawing.Drawing2D. InterpolationMode.HighQualityBicubic; .HighQualityBicubic; Gbr.PixelOffsetMode Gbr.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode System.Drawing.Drawing2D. PixelOffsetMode.HighSpeed; .HighSpeed; Rectangle rect Rectangle rect = new newRectangle Rectangle(0, (0, 0, lebar, tinggi); Gbr.DrawImage(gambar, Gbr.DrawImage(gambar, rect); SaveFileDialog simpan = new newSaveFileDialog SaveFileDialog(); (); //listing program untuk penyimpanan simpan.Filter = "Jpeg Format|*.Jpg Format|*.Jpg" "; simpan.RestoreDirectory simpan.RestoreDirectory = true true; ; if (simpan.ShowDialog() if (simpan.ShowDialog() != DialogResult DialogResult.Cancel) .Cancel) { ukuranBaru.Save(simpan.FileName); ukuranBaru.Dispose(); MessageBox.Show( MessageBox .Show("Gambar "Gambar Berhasil Disimpan", Disimpan" , "Info"); "Info" ); } } } }
21
PERTEMUAN V REGISTRY
Pengertian Registry
Registry adalah sebuah pusat database yang menyimpan pengaturan konfigurasi pada sebuah sistem operasi dalam hal ini yaitu Microsoft Windows. Registry yang biasa disebut Windows Registry. Registry pada OS Windows ini biasanya terdapat informasi dan pengaturan untuk hardware, software dan system operasi itu sendiri, software non-system. Pengaturan-pengaturan tersebut diatur dengan Key. Biasanya pada Registry Windows terdiri dari komponen-komponen diantaranya: 1) Key 2) Subkey 3) Value
Cara Mengakses Registy Editor (Regedit)
Ada dua cara mudah untuk membuka Regedit yaitu menggunakan fitur "Run" dan buka melalui start menu windows. Seteleh buka salah satu pilihan tersebut ketikkan saja "Regedit" tanpa tanda kutip lalu tekan enter. maka sudah bisa langsung mengakses Registry Editor. Contohnya seperti gambar berikut ini :
1. Class Registry Class registry adalah kumpulan dari key-key yang terdapat di bawahnya dimana key-key tersebut ditempatkan pada class yang sesuai dengan fungsi key tersebut. Di dalam registry terdapat lima buah member class. Berikut adalah jenis member class dan fungsi dari class tersebut.
22
MEMBERS
FUNGSI
KEY
ClassesRoot
Menyimpan informasi tentang type dan HKEY_CLASSES_ROOT class serta propertinya.
CurrentUser
Menyimpan informasi tentang type dan HKEY_CURRENT_USER class serta propertinya.
LocalMachine
Menyimpan informasi konfigurasi dari HKEY_LOCAL_MACHINE mesin lokal.
Users
Menyimpan informasi konfigurasi default pemakai.
CurrentConfig
Menyimpan informasi hardware yang HKEY_CURRENT_CONFIG tidak spesifik pemakai.
mengenai
HKEY_USERS
2. Fungsi Registry Adalah Untuk Mengatur Bagaimana Hardware Dan Software di dalam laptop/PC Agar Dapat difungsikan Sebagaimana Mestinya. Pada registry windows kita hanya bisa melihat code-code atau menggunakan bahasa komputer. Dan Untuk manfaatnya sudah jelas yaitu untuk memudahkan sebuah Sistem Operasi bekerja dengan baik dan serta agar kita bisa mengontrol Operating System dengan mudah.
Latihan Aplikasi Informasi Registy dengan C#
23
Buatlah sebuah project Windows Form Applicationdengannama“informasi.sln”. Tambahkan Tambahkan komponen-kompunen berikut ini pada form: Komponen
Text
Name
Button
AMBIL INFORMASI REGISTRY
bt_getreg
Label1
Nama OS
label1
Label2
NamaProcesor
label2
Label3
Arsitektur
label3
Label4
Nama Motherboard
label4
Label5
Output Nama OS
l_n_os
Label6
Output NamaProcesor
l_np
Label7
Output Arsitektur
l_a_os
Label8
Output Motherboard
l_mobo
Ketikan listing berikut:
24
Penjelasan listing: using System; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Microsoft.Win32; Microsoft.Win32;
//namespace yang di gunakan dalam program
this.StartPosition = FormStartPosition this.StartPosition FormStartPosition.CenterScreen; .CenterScreen; this.FormBorderStyle this .FormBorderStyle = FormBorderStyle FormBorderStyle.FixedSingle; .FixedSingle; this.MaximizeBox this .MaximizeBox = false false; ; this.MinimizeBox this .MinimizeBox = false false; ;
//membuatukuran form tidakbisa di resize, minimize/maximize
Tidak Bisa di Resize, minimize/maximize
RegistryKey buka = Registry Registry.LocalMachine; .LocalMachine;
//varibel “buka” memanggilLocalMachinedariRegedit:
Memanggil LocalMachine dari Regedit
25
RegistryKey namaOS = buka.OpenSubKey("SOFTWARE\\Microsoft\\Windows buka.OpenSubKey( "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"); NT\\CurrentVersion" );
//membuat variable “namaOS” berisikan komponen berisikan komponen informasi yang ada pada registry
MemanggilLocalMachinedariRegedit HKEY_LOCAL_MACHINE/SOFT HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft WARE/Microsoft/Windows /Windows
RegistryKeyprosesor = RegistryKeyprosesor buka.OpenSubKey( "HARDWARE\\D "HARDWARE\\DESCRIPTION\\Sys ESCRIPTION\\System\\Central tem\\CentralProcessor\\0" Processor\\0"); );
//membuat variable “prosesor” berisikan komponen informasi yang ada pada ada pada registry
MemanggilLocalMachinedariRegedit HKEY_LOCAL_MACHINE/HAR HKEY_LOCAL_MACHINE/HARDWARE/DESCRI DWARE/DESCRIPTION/Syste PTION/System/CentralProce m/CentralProcesor/0 sor/0
RegistryKey arsitektur = buka.OpenSubKey( "HARDWARE\\D "HARDWARE\\DESCRIPTION\\Sys ESCRIPTION\\System\\Central tem\\CentralProcessor\\0" Processor\\0"); );
//membuat variable “arsitektur”berisikan komponen “arsitektur”berisikan komponen informasi yang ada pada registry
26
MemanggilLocalMachinedariRegedit HKEY_LOCAL_MACHINE/HARD HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTIO WARE/DESCRIPTION/System/C N/System/CentralProcesor/0 entralProcesor/0
RegistryKey motherboard RegistryKey motherboard = buka.OpenSubKey( "HARDWARE\\D "HARDWARE\\DESCRIPTION\\Sys ESCRIPTION\\System\\BIOS" tem\\BIOS"); );
//membuat variable “namaOS”, “prosesor”, “arsitektur”, “motherboard” beris ikan komponen informasi yang ada pada registry
MemanggilLocalMachinedariRegedit HKEY_LOCAL_MACHINE/HARD HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTIO WARE/DESCRIPTION/System/BI N/System/BI
l_n_os.Text = Convert Convert.ToString(namaOS.GetValue( .ToString(namaOS.GetValue("ProductName" "ProductName")); )); l_np.Text=Convert l_np.Text= Convert.ToString(prosesor.GetValue( .ToString(prosesor.GetValue("ProcessorNameString" "ProcessorNameString")); )); l_a_os.Text = Convert Convert.ToString(arsitektur.GetValue( .ToString(arsitektur.GetValue("Identifier" "Identifier")); )); l_mobo.Text = Convert Convert.ToString(motherboard.GetValue( .ToString(motherboard.GetValue("BaseBoardManufacturer" "BaseBoardManufacturer")); ));
//listing di atas mengkonversi value dari variable Registry Key dan memasukkan ke label pada form
27
MemanggilLocalMachinedari Regedit
28
PERTEMUAN VI REGISTRY II
Latihan aplikasi informasi alamat jaringan
Aplikasin ini menampilkan informasi alamat jaringan sebuah Laptop/PC yang informasinya diambil dari “regedit”
Ketikan listing berikut ini: using System; using System; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel; using System.Data; using System.Data; using System.Drawing; System.Drawing; using System.Linq; using System.Linq; using System.Text; using System.Text; using System.Windows.Forms; System.Windows.Forms; using Microsoft.Win32; Microsoft.Win32; namespace jaringan_dengan_form jaringan_dengan_form { public partial class Form2 Form2 : : Form { public Form2() public Form2() { InitializeComponent(); this.StartPosition this .StartPosition = FormStartPosition FormStartPosition.CenterScreen; .CenterScreen; this.FormBorderStyle this .FormBorderStyle = FormBorderStyle FormBorderStyle.FixedSingle; .FixedSingle; this.MaximizeBox this .MaximizeBox = false false; ; this.MinimizeBox this .MinimizeBox = false false; ; } private void void Form2_Load( Form2_Load(object object sender, sender, EventArgs EventArgs e) e) { } private void void button1_Click( button1_Click(object object sender, sender, EventArgs EventArgs e) e) { RegistryKey buka RegistryKey buka = Registry Registry.LocalMachine; .LocalMachine; RegistryKey kartuJaringan RegistryKey kartuJaringan = buka.OpenSubKey buka.OpenSubKey ("SOFTWARE\\M "SOFTWARE\\Microsoft\\Wind icrosoft\\Windows ows NT\\CurrentVers NT\\CurrentVersion\\NetworkC ion\\NetworkCards" ards"); ); RegistryKey konfJaringan RegistryKey konfJaringan = buka.OpenSubKey buka.OpenSubKey ("SYSTEM\\Cur "SYSTEM\\CurrentControlS rentControlSet\\Services\\" et\\Services\\"); ); if (kartuJaringan == null if (kartuJaringan null) ) { MessageBox.Show( MessageBox .Show("Maaf "Maaf Registry Key Tidak Valid" , "Peringatan" , MessageBoxButtons.OK, MessageBoxButtons .OK, MessageBoxIcon MessageBoxIcon.Warning); .Warning);
29
} StringBuilder tambahText StringBuilder tambahText = new StringBuilder StringBuilder(); (); foreach (string foreach ( string namaKey namaKey in kartuJaringan.GetSubKeyNa kartuJaringan.GetSubKeyNames()) mes()) { RegistryKey namaServiceKartu RegistryKey namaServiceKartu = buka.OpenSubKey buka.OpenSubKey ("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards" + NT\\CurrentVersion\\NetworkCards" + "\\" "\\" + + namaKey); if (namaServiceKartu == null if (namaServiceKartu null) ) { MessageBox.Show( MessageBox .Show("Maaf "Maaf Registry Key Tidak Valid", Valid" , "Peringatan", "Peringatan" , MessageBoxButtons MessageBoxButtons.OK, .OK, MessageBoxIcon.Warning); MessageBoxIcon .Warning); } tambahText.AppendLine("Kartu tambahText.AppendLine( "Kartu Network: "+( " +(string string) ) namaServiceKartu.GetValue("Description")); namaServiceKartu.GetValue("Description" )); RegistryKey keyJaringan = buka.OpenSubKey RegistryKey keyJaringan ("SYSTEM\\Curre "SYSTEM\\CurrentControlSet ntControlSet\\Services\\" \\Services\\" + + ((string ((string)namaServiceKartu.GetValue( )namaServiceKartu.GetValue("ServiceName" "ServiceName")) )) + "\\Parameters\\Tcpip"); "\\Parameters\\Tcpip" ); if (keyJaringan if (keyJaringan == null null) ) { MessageBox.Show( MessageBox .Show("Belum "Belum ada konfigurasi ip", ip" , "Peringatan" "Peringatan", , MessageBoxButtons.OK, MessageBoxButtons .OK, MessageBoxIcon MessageBoxIcon.Warning); .Warning); } else { string[] string [] alamatip=(string alamatip=( string[]) []) keyJaringan.GetValue keyJaringan.GetValue ("IPaddress" "IPaddress"); ); string[] string [] subnetmask=(string subnetmask=(string[])keyJaringan.GetValue [])keyJaringan.GetValue ("SubnetMask" "SubnetMask"); ); string[] string [] defaultgateway=( defaultgateway=(string string[])keyJaringan.GetValue [])keyJaringan.GetValue ("DefaultGateway" ); if (alamatip if (alamatip != null null || || subnetmask != null null || || defaultgateway defaultgateway != null null) ) { foreach ( foreach (string string ipaddress ipaddress in in alamatip) alamatip) { tambahText.AppendLine("IP tambahText.AppendLine( "IP Adress = " + " + ipaddress); } foreach ( foreach (string string subnet subnet in in subnetmask) subnetmask) { tambahText.AppendLine("Subnet tambahText.AppendLine( "Subnet Mask = " + " + subnet); } foreach ( foreach (string string gateway gateway in in defaultgateway) defaultgateway) { tambahText.AppendLine("Default tambahText.AppendLine( "Default Gateway = " + " + gateway); } } } tambahText.AppendLine("\n" tambahText.AppendLine( "\n"); ); } MessageBox.Show(tambahText.ToString()); MessageBox .Show(tambahText.ToString());
30
} } }
31
PERTEMUAN VII WMI
Windows Management Instrumentation (WMI)
WMI adalah core teknologi management pada windows yang memungkinkan kita untuk melakukan tugas-tugas yang bersifat ma nagement windows dengan menulis script secara programatika, WMI menyediakan pendekatan yang konsisten untuk melakukan tugas-tugas yang bersifat management Windows yang kita ketemu seharihari dengan programming atau scripting language. Dengan WMI, kita ti dak hanya bisa melakukan tugas-tugas management windows pada komputer lokal, tetapi juga bisa mengelola komputer yang remote (tentunya selama kita punya hak akses terhadap komputer tersebut). Adapun beberapa contoh tugas-tugas yang dapat dila kukan dengan WMI: 1. Melakukan query (permintaan data) ke sistem operasi kita untuk mendapatkan sejumlah informasi seperti: a. Pemakaian harddisk. b. Membuka File c. Mendapatkan kondisi baterai yang di pakai d. Mendapatkan sejumlah aplikasi yang telah terinstall di komputer kita, 2. Menciptakan atau menjalankan sebuah proses atau aplikasi secara scripting / programatik. Misalnya kita dapat membuka sebuah calculator windows (calc.exe) secara programmatik. 3. Membuat schedule atau jadwal untuk menjalankan sebuah proses pada waktu yang telah ditentukan. 4. Mengelola (bahkan, me-restart atau mematikan) komputer lokal ataupun remote. Oleh karena fleksibilitas WMI yang tinggi, kita bisa mengkombinasikan berbagai kemampuannya (seperti yang disebutkan di atas), sehingga dapat menjadi sebuah aplikasi yang sangat membantu. Salah satu contohnya adalah kita ingin membuat sebuah aplikasi yang memonitor pemakaian memory pada komputer kita, bila telah mencapai 3 GB, maka akan terjadi aksi tertentu (misalnya mengirimkan email kepada administrator, mencatat proses-proses yang sedang aktif ke log file, dan lain sebagainya). WMI memungkinkan kita untuk melakukan tugas-tugas tersebut secara custom dan flexiblel.
Aplikasi Info Baterai Aplikasi ini berfungsi untuk memberikan informasi kondisi battery.
32
Adapun komponennya adalah: NO
Component Name
Text
Name
1
Label 1 Label 2 Label 3 Label 4 Label 5 Progress Bar timer1
Status Power Sisa Daya Baterai : sisa waktu Status Baterai : Status Baterai -
lb_status Label2 lb_sisa Label4 lb_stat_bat pb_indikator timer1
2 3 4 5 6 7
Listing Program: using System; using System; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel;
33
using System.Data; using System.Data; using System.Drawing; System.Drawing; using System.Text; using System.Text; using System.Windows.Forms; System.Windows.Forms; namespace aplikasi_jaringan_net_3_ aplikasi_jaringan_net_3_0 0 { publicpartialclassForm3 publicpartialclass Form3 : : Form { public Form3() public Form3() { InitializeComponent(); timer1.Enabled timer1.Enabled = true true; ; } privatevoid Form3_Load(object privatevoid Form3_Load( object sender, sender, EventArgs EventArgs e) e) { } privatevoid refreshBaterai() refreshBaterai() { PowerStatus daya_baterai PowerStatus daya_baterai = SystemInformation SystemInformation.PowerStatus; .PowerStatus; switch (daya_baterai.PowerLineSt (daya_baterai.PowerLineStatus) atus) //memeriksa status sumber AC { case PowerLineStatus PowerLineStatus.Online: .Online: lb_status.Text = "Terhubung Ke Sumber A/C"; A/C" ; break; break ; case PowerLineStatus PowerLineStatus.Offline: .Offline: lb_status.Text = "Sumber A/C Tidak Terhubung"; Terhubung" ; break; break ; case PowerLineStatus PowerLineStatus.Unknown: .Unknown: lb_status.Text = "Status Sumber A/C Tidak Diketahui" Diketahui"; ; break; break ; } int persenBaterai = (int int persenBaterai ( int)(daya_bater )(daya_baterai.BatteryLi ai.BatteryLifePercent*100); fePercent*100); //mendaftarkan //mendaftar kan persenBaterai sebagai pengakses jumlah daya baterai untuk ditampilkan pada progress bar if(persenBaterai<=100) if(persenBaterai<=100) { pb_indikator.Value=persenBaterai; } else { pb_indikator.Value=0; } int sisa_waktu = daya_baterai.BatteryLife daya_baterai.BatteryLifeRemaining; Remaining; //mendaftarkan //mendaftar kan sisa_waktu sebagai pengakses sisa waktu pakai baterai if (sisa_waktu >= 0) if (sisa_waktu { lb_sisa.Text lb_sisa.Text = string string.Format( .Format("{0} "{0} Min", Min", sisa_waktu / 60); } else { lb_sisa.Text lb_sisa.Text = string string.Empty; .Empty; }
34
lb_stat_bat.Text lb_stat_bat.Text = daya_baterai.BatteryChar daya_baterai.BatteryChargeStatus.ToS geStatus.ToString(); tring(); //mengakses status string baterai } privatevoid timer1_Tick(object privatevoid timer1_Tick( object sender, sender, EventArgs EventArgs e) e) { refreshBaterai(); } } }
Penjelasan Kode program:
1. Klik menu File, pilih New Project, pilih WindowsFormsApplication,kemudian klik Ok. 2
Kemudian masuk ke lembar listing program timer1.Enabled = true true;; , untuk merefresh waktu ke sistem komputer/notebook.
public Form3() public Form3() { InitializeComponent(); timer1.Enabled = true true; ; }
3
Listing program di bawah ini menjelaskan sebuah fungsi yang berguna untuk merefresh baterai yang ada di sistem si stem komputer/Notebook . .
privatevoid refreshBaterai() refreshBaterai() { PowerStatus daya_baterai PowerStatus daya_baterai = SystemInformation SystemInformation.PowerStatus; .PowerStatus; switch (daya_baterai.PowerLineSt (daya_baterai.PowerLineStatus) atus) //memeriksa status sumber AC { case PowerLineStatus PowerLineStatus.Online: .Online: lb_status.Text = "Terhubung Ke Sumber A/C"; A/C" ; break; break ; case PowerLineStatus PowerLineStatus.Offline: .Offline: lb_status.Text = "Sumber A/C Tidak Terhubung"; Terhubung" ; break; break ; case PowerLineStatus PowerLineStatus.Unknown: .Unknown: lb_status.Text = "Status Sumber A/C Tidak Diketahui"; Diketahui" ; break; break ; } Int persenBaterai=( persenBaterai=(int int)(daya_bater )(daya_baterai.BatteryLif ai.BatteryLifePercent* ePercent* 100); //mendaftarkan //mendaftark an persenBaterai sebagai pengakses jumlah daya baterai untuk ditampilkan pada progress bar If {
(persenBaterai<=100) pb_indikator.Value=persenBaterai;
} else { pb_indikator.Value=0; }
35
int sisa_waktu = daya_baterai.BatteryLife daya_baterai.BatteryLifeRemaining; Remaining; //mendaftarkan //mendaftark an sisa_waktu sebagai pengakses sisa waktu pakai baterai if (sisa_waktu >= 0) if (sisa_waktu { lb_sisa.Text lb_sisa.Text = string.Format( string.Format("{0} "{0} Min", Min", sisa_waktu / 60); } else { lb_sisa.Text = string string.Empty; .Empty; } lb_stat_bat.Text lb_stat_bat.Text = daya_baterai.BatteryChar daya_baterai.BatteryChargeStatus.ToS geStatus.ToString(); tring(); //mengakses status string baterai }
5. Listing program di bawah ini menjelaskan eksekusi waktu yang di hitung perinterval nya. private void void timer1_Tick( timer1_Tick(object object sender, sender, EventArgs EventArgs e) e) { refreshBaterai(); }
36
PERTEMUAN VIII WMI II
Berikut ini adalah aplikasi pendeteksi Jaringan, Aplikasi ini memanfaatkan Fungsi WMI yang ada pada Visual Studio 2010 (C#).
Membuat Aplikasi Deteksi Device Adapter dan Status Jaringan (IP)
1. Buatlah form design seperti dibawah ini:
2. Atur properties setiap object diatas dengan ketentuan dibawah ini: No 1 2 3 4 5
Object Form1 Label1 ComboBox1 Button ListBox1
Name
Text Aplikasi Deteksi Device Manager Choice Adapter Device: Dikosongkan Get -
Form1 Label1 comboBox1 button1 listBox1
3. Lihat Solution Explorer pada sebelah kanan program anda, klik kanan pada Form -> Pilih View Code.
37
4.
Tambahkan code dibawah ini pada project code Form anda.
using System; using System; using System.Net; using System.Net; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel; using System.Data; using System.Data; using System.Drawing; System.Drawing; using System.Linq; using System.Linq; using System.Text; using System.Text; using System.Windows.Forms; System.Windows.Forms; using System.Net.NetworkInform System.Net.NetworkInformation; ation; using System.Collections; System.Collections; project namespace networkcoba // nama project namespace networkcoba { public partial class Form1 Form1 : : Form { private NetworkInterface NetworkInterface[] [] nicArr;
public Form1() public Form1() { InitializeComponent(); InitializeNetworkInterface(); } public void InitializeNetworkInterfa InitializeNetworkInterface() ce() { nicArr = NetworkInterface NetworkInterface.GetAllNetworkInterfaces .GetAllNetworkInterfaces(); (); //untuk // untuk mendapatkan info Interface yang di pakai pada jaringan tersebut for (int for ( int i=0; i=0; i
38
info.Add("Interface info.Add("Interface Information for : " + global_properties.HostNa global_properties.HostName+global_prope me+global_properties.Domain rties.DomainName); Name); info.Add("NetBIOS info.Add("NetBIOS node type : " + global_properties.NodeType); info.Add("=========== info.Add("======================= ======================== ======================== ============= = ======="); =======" ); info.Add("Name info.Add("Name : " + nic.Name); info.Add("Descriptio info.Add("Description n : " + nic.Description); info.Add("Network info.Add("Network Interface Type : " + nic.NetworkInterfaceType); info.Add("Physical info.Add("Physical Address : " + nic.GetPhysicalAddress() nic.GetPhysicalAddress().ToString()) .ToString()); ; // Info MAC Address yang di pakai info.Add("Adapter info.Add("Adapter ID : " + nic.Id.ToString()); info.Add("Recieve info.Add("Recieve Only : " + nic.IsReceiveOnly.ToString()); info.Add("Status info.Add("Status : " + nic.OperationalStatus.ToString()); info.Add("Speed info.Add("Speed : " + nic.Speed.ToString()); IPInterfaceProperties IPInterfaceProperties properties properties = nic.GetIPProperties(); info.Add("Properties: info.Add("Properties: "); "); info.Add(" info.Add(" |DNS Addresses : " ); foreach ( foreach (IPAddress IPAddress DnsServer DnsServer in properties.DhcpServerAddresses) info.Add(" info.Add(" " + DnsServer.ToString()); DnsServer.ToString()); info.Add(" info.Add(" |DNS Suffic : " + properties.DnsSuffix.ToString()); info.Add(" info.Add(" |DNS Enabled : " + " + properties.IsDnsEnabled.ToString()); info.Add(" info.Add(" |Dynamic DNS Enabled : " + properties.IsDynamicDnsE properties.IsDynamicDnsEnabled.ToStr nabled.ToString()); ing()); info.Add(" info.Add(" |DHPC Server Addresses : " ); foreach ( foreach (IPAddress IPAddress DhcpServer DhcpServer in properties.DhcpServerAddresses) info.Add(" info.Add(" -> "+ DhcpServer.ToString()); DhcpServer.ToString()); info.Add(" info.Add(" |UniCast Addresses : " ); foreach ( foreach (IPAddressInformation IPAddressInformation uniCast uniCast in properties.UnicastAddresses) info.Add(" info.Add(" -> "+ uniCast.Address.ToString( uniCast.Address.ToString()); )); info.Add(" info.Add(" |AnyCast Addresses : " ); foreach ( foreach (IPAddressInformation IPAddressInformation anyCast anyCast in properties.AnycastAddresses) info.Add(" info.Add(" -> "+ anyCast.Address.ToString( anyCast.Address.ToString()); )); info.Add(" info.Add(" |Supports multi-cast : " + nic.SupportsMulticast.ToString()); info.Add(" info.Add(" |Multicast Addresses : " ); foreach ( foreach (IPAddressInformation IPAddressInformation multiCast multiCast in properties.MulticastAddresses) info.Add(" info.Add(" -> "+ multiCast.Address.ToStrin multiCast.Address.ToString()); g()); info.Add(" info.Add(" |Gateway Addresses : " ); foreach ( foreach (GatewayIPAddressInformation GatewayIPAddressInformation GateWay GateWay in properties.GatewayAddresses) info.Add(" info.Add(" -> "+ GateWay.Address.ToString()) GateWay.Address.ToString()); ; if (nic.Supports( (nic.Supports(NetworkInterfaceComponent NetworkInterfaceComponent.IPv4) .IPv4) == true true) ) //untuk mendapatkan IP gateway
39
{ IPv4InterfaceProperties IPV4Props = IPv4InterfaceProperties IPV4Props properties.GetIPv4Properties(); // Perangkat loopback tidak memiliki informasi apapun terkait properti info.Add("+IPV4 info.Add("+IPV4 Properties : " ); if (IPV4Props if (IPV4Props != null null)//untuk )//untuk mendapatkan info IP { info.Add(" info.Add(" |Interface Index : " + IPV4Props.Index.ToString IPV4Props.Index.ToString()); ()); //untuk mendapatkan info MAC Address yang ada info.Add(" info.Add(" |Automatic Private Addressing Active : " + IPV4Props.IsAutomaticPri IPV4Props.IsAutomaticPrivateAddressi vateAddressingActive.ToSt ngActive.ToString()); ring()); info.Add(" info.Add(" |Automatic Private Addressing Enabled : " + IPV4Props.IsAutomaticPri IPV4Props.IsAutomaticPrivateAddressi vateAddressingEnabled.ToS ngEnabled.ToString()); tring()); info.Add(" info.Add(" |DHCP Enable : " + IPV4Props.IsDhcpEnabled. IPV4Props.IsDhcpEnabled.ToString());// ToString());// status DHCP info.Add(" info.Add(" |Forwarding Enabled : " + IPV4Props.IsForwardingEn IPV4Props.IsForwardingEnabled.ToStri abled.ToString()); ng()); info.Add(" info.Add(" |MTU Size : " + IPV4Props.Mtu.ToString() IPV4Props.Mtu.ToString().ToString()) .ToString()); ; info.Add(" info.Add(" \\Uses Wins : " + IPV4Props.UsesWins.ToStr IPV4Props.UsesWins.ToString().ToStri ing().ToString()); ng()); } else { info.Add(" info.Add(" |Device has no IPv4 properties" properties"); ); } } else { info.Add("+IPV4 info.Add("+IPV4 is not implemented"); implemented" ); } if (nic.Supports( (nic.Supports(NetworkInterfaceComponent NetworkInterfaceComponent.IPv6) .IPv6) == true true) ) { IPv6InterfaceProperties IPV6Props IPv6InterfaceProperties IPV6Props = properties.GetIPv6Properties(); info.Add("+IPV6 info.Add("+IPV6 Properties: "); " ); if (IPV6Props if (IPV6Props != null null) ) { info.Add("+IPV6 info.Add("+IPV6 Properties : " ); info.Add(" info.Add(" |Interface Index: " + IPV6Props.Index.ToString()); info.Add(" info.Add(" \\MTU Size: " + IPV6Props.Mtu.ToString()); else { info.Add(" info.Add(" }
|Device has no IPv6 properties" properties"); );
} else { info.Add("+IPV6 info.Add("+IPV6 is not implemented"); implemented" ); } foreach ( foreach (string string a a in in info) info) { listBox1.Items.Add(a); } }
40
private void button1_Click( button1_Click( object object sender, sender, EventArgs EventArgs e) e) { listBox1.Items.Clear(); networkproc(); } } }
41
PERTEMUAN IX WMI III
Aplikasi Bandwidth
Bandwidth monitoring adalah suatu program yang digunakan untuk memantau lalu lintas data dalam jaringan atau bandwidth . pada pembahasan kali ini ini adalah pembuatan program program tersebut menggunakan menggunakan microsoft visual studio studio c#. untuk untuk tampilan interfacenya adalah :
Langkah awal buatlah satu project baru atau gunakan project yang sudah ada dant ambah form baru dalam project tersebut. Kemudiandesainlah form tersebut sesuai dengan tampilan diatas menggunakan tool box. Adapun komponennya adalah :
Label 1 Label 2 Label 3 Label 4
Interface Speed Sort Bytes Received Bytes
Label 5 Label 6 Label 7 Label 8
Download Upload 0 0
Label 9 Label 10 Label 11 Label 12
0 0 0 Bandwith Monitoring
comboBox1 Button 1 Button 2
Start Stop
42
Untuk membuat source programnya kita perlu men-include class bernama berikut programmnya : System.Net.NetworkInformation . berikut using System; using System; using System.Collections.Generic; using System.ComponentModel; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.NetworkInformation;
namespace WindowsFormsApplication1 WindowsFormsApplication1 { public partialclassForm1 partialclass Form1 : : Form { public constdouble waktu_update waktu_update = 1000; private NetworkInterface NetworkInterface[] [] network_interface; network_interface; public Timer timer; public Form1() public Form1() { InitializeComponent(); InitializeNetworkInterface(); Timer_intial(); } public void InitializeNetworkInterface() { network_interface network_interface = NetworkInterface .GetAllNetworkInterfaces(); for (int for ( int i i = 0; i
43
} public void void clear() clear() { label7.Text = "0" "0"; ; label8.Text = "0" "0"; ; label9.Text = "0" "0"; ; label10.Text label10.Text = "0" "0"; ; label11.Text label11.Text = "0" "0"; ; } public void Timer_intial() { timer = new newTimer Timer(); (); timer.Interval timer.Interval = (int int)waktu_update; )waktu_update; timer.Tick += new newEventHandler EventHandler (Update_waktu); } void Update_waktu(object Update_waktu(object sender, sender, EventArgs EventArgs e) e) { proc(); } private void Form1_Load( void Form1_Load(object object sender, sender, EventArgs EventArgs e) e) { timer.Stop(); } privatevoid button1_Click_1( button1_Click_1(object object sender, sender, EventArgs EventArgs e) e) { timer.Start(); } privatevoid button2_Click_1( button2_Click_1(object object sender, sender, EventArgs EventArgs e) e) { timer.Stop(); clear(); } } }
Hasil Output
44
Penjelasan Kode :
Pada awal penggunakan penggunakan name space kita menggunakan menggunakan fungsi “ using System.Net.NetworkInformation ; ”. banyak fungsi jaringan yang menggunakan library ini salah satunya dengan dengan informasi informasi bandwidth. Kemudian Kemudian bagian ini kita menggunakan timer sebagai status netwok kita dengan intervalnya =1000 public partial class Form1 Form1 : : Form { public const double waktu_update = 1000; private NetworkInterface NetworkInterface[] [] network_interface; network_interface; public Timer timer;
jangan lupa untuk memasukan method method tersebut pada bagian :
public Form1() public Form1() { InitializeComponent(); InitializeNetworkInterface(); Timer_intial(); }
Dan pada bagian ini kita mendeskripsikan NIC pada komputer kita dengan perintah :” :” NetworkInterface. NetworkInterface.GetAllNetworkInterfaces(); “. Dan informasi tersebut akan ditampilkan pada label 7 sampai dengan 11. public void InitializeNetworkInterface() { network_interface network_interface = NetworkInterface NetworkInterface.GetAllNetworkInterfaces(); .GetAllNetworkInterfaces(); for (int for ( int i i = 0; i
45
Kemudian kita set untuk label 7 sampai 11 sebelum button start dimulai dengan nilainya 0 :
Public void void clear() clear() { label7.Text = "0" "0"; ; label8.Text = "0" "0"; ; label9.Text = "0" "0"; ; label10.Text = "0" "0"; ; label11.Text = "0" "0"; ; }
Kemudian untuk menjalankan tombol start dan stop masukan perintah berikut
Private void button1_Click_1( button1_Click_1(object object sender, sender, EventArgs EventArgs e) e) { timer.Start(); } Private void button2_Click_1( button2_Click_1(object object sender, sender, EventArgs EventArgs e) e) { timer.Stop(); clear(); }
Tugas 1. Buatlah Aplikasi Sederhana Pendeteksi IP (IP Address, IP Gateway, IP Subnetmaks,IP DNS) dari program yang sudah ada. 2. Aplikasi ini hanya mendeteksi IP saja yang terkoneksi pada Jari ngan.
46
PERTEMUAN X - XI MANIPULASI JARINGAN
Pada pertemuan ini kita membahas tentang manipulasi jaringan, pada program C# banyak sekali program jaringan yang dapat kita buat dengan memanfaatkan, socket, registry, framework, WMI. Salah satunya adalah membuat jaringan WLAN. Pada Operating Operating Sysem sendiri disediakan tools untuk membuat sebuah Jaringan WLAN, namun kita dapat mempersingkat langkah-langkah ters ebut dengan membuat sebuah program manipulasi jaringan .
HOTSPOT ENGINE
Hotspot adalah area dimana seorang client dapat terhubung dengan jaringan internet secara wireless (nirkabel/tanpa kabel) dari PC, note book atau gadget seperti Handphone dalam jangkauan radius kurang lebih beberapa ratus meteran atau tergantung dari kekuatan frekuensi/signal.Pada pertemuan ini Buatlah desain seperti dibawah ini dengan dua text boxt, tiga label dan satu button. Pada pembuatan WLAN hal yang wajib di buat adalah SSID, SSID atau Service set identifier adalah tempat mengisikan nama dari access point yang akan disetting. Setelah membuat SSID kita membuat Password, hal ini di perlukan untuk keamanan dalam komunikasi data.
Contoh SSID
Langkah- Langkah Langkah Pembuatan Program Hotspot Engine
Buatlah Form di bawah ini
47
Daftar Komponen:
Label 1 Label 2 Label 3 TextBox 1
Hotspot Engine SSID PASSWORD
TextBox 2 Button
START
Listing Program :
using System; using System; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel; using System.Data; using System.Data; using System.Drawing; System.Drawing; using System.Text; using System.Text; using System.Windows.Forms; System.Windows.Forms; using System.Diagnostics; System.Diagnostics; using System.Security.Principa System.Security.Principal; l; using System.Net; using System.Net; namespace WindowsFormsApplication4 WindowsFormsApplication4 { public partial class Form1 Form1 : : Form { public Form1() public Form1() { InitializeComponent(); if (!IsAdmin()) if (!IsAdmin()) { RestartElevated(); } bsi_hotspot( null null, ,null null, ,false false); ); Application.Exit(); Application .Exit(); } private void void bsi_hotspot( bsi_hotspot(string string ssid, ssid, string string key, key,bool bool status) status) { ProcessStartInfo processStartInfo = new
48
ProcessStartInfo ("cmd.exe" "cmd.exe"); ); processStartInfo.Redirec processStartInfo.RedirectStandardInp tStandardInput ut = true true; ; processStartInfo.Redirec processStartInfo.RedirectStandardOut tStandardOutput put = true true; ; processStartInfo.CreateN processStartInfo.CreateNoWindow oWindow = true true; ; processStartInfo.UseShellExecute = false false; ; Process process Process process = Process Process.Start(processStartInfo); .Start(processStartInfo); if (process != null if (process null) ) { if (status) if (status) { process.StandardInput.WriteLine("netsh process.StandardInput.WriteLine( "netsh hostednetwork mode=allow ssid=" + ssid=" + ssid key);// pemangilan untuk membuat SSID process.StandardInput.WriteLine("netsh process.StandardInput.WriteLine( "netsh hosted network"); network"); process.StandardInput.Close(); } else { process.StandardInput.WriteLine("netsh process.StandardInput.WriteLine( "netsh hostednetwork" ); process.StandardInput.Close(); } }
wlan set + " key=" + key=" + wlan start
wlan stop
} public static bool bool IsAdmin() IsAdmin() { WindowsIdentity id WindowsIdentity id = WindowsIdentity WindowsIdentity.GetCurrent(); .GetCurrent(); WindowsPrincipal p = new WindowsPrincipal (id); return p.IsInRole( return p.IsInRole(WindowsBuiltInRole WindowsBuiltInRole.Administrator); .Administrator); } public void RestartElevated() RestartElevated() { ProcessStartInfo startInfo = new ProcessStartInfo ProcessStartInfo(); (); startInfo.UseShellExecut startInfo.UseShellExecute e = true true; ; startInfo.CreateNoWindow = true true; ; startInfo.WorkingDirectory = Environment Environment.CurrentDirectory; .CurrentDirectory; startInfo.FileName = System.Windows.Forms.Application System.Windows.Forms. Application.ExecutablePath; .ExecutablePath; startInfo.Verb startInfo.Verb = "runas" "runas"; ; try { Process p Process p = Process Process.Start(startInfo); .Start(startInfo); } catch { } System.Windows.Forms.Application System.Windows.Forms. Application.Exit(); .Exit(); } private void void button1_Click( button1_Click(object object sender, sender, EventArgs EventArgs e) e) { string ssid string ssid = textBox1.Text, key = textBox2.Text; if (!connect) if (!connect) { if (textBox1.Text if (textBox1.Text == null null || || textBox1.Text textBox1.Text == "" "") ) {
49
MessageBox .Show("Anda MessageBox.Show( "Anda Belum Mengisi SSID !" "Informasi", "Informasi" , MessageBoxButtons MessageBoxButtons.OK, .OK, MessageBoxIcon .Information); } else { if (textBox2.Text == null if (textBox2.Text null || || textBox2.Text textBox2.Text == "" "") ) { MessageBox.Show( MessageBox .Show("Anda "Anda Belum Mengisi Password !", !" , "Informasi" "Informasi", , MessageBoxButtons MessageBoxButtons.OK, .OK, MessageBoxIcon .Information); } else { if (key.Length if (key.Length >= 6) { bsi_hotspot(ssid, bsi_hotspot(ssid, key, true true); ); textBox1.Enabled = false false; ; textBox2.Enabled = false false; ; button1.Text = "Berhenti" "Berhenti"; ; connect = true true; ; } else { MessageBox.Show( MessageBox .Show("Password "Password harus 6 karakter atau lebih !", !", "Information", "Information" , MessageBoxButtons MessageBoxButtons.OK, .OK, MessageBoxIcon.Information); MessageBoxIcon .Information); } } } } else { bsi_hotspot( null null, , null null, , false false); ); textBox1.Enabled = true true; ; textBox2.Enabled textBox2.Enabled = true true; ; button1.Text button1.Text = "Start" "Start"; ; x = false false; ; } } public bool bool connect connect { get get; ; set set; ; } public bool bool x x { get get; ; set set; ; } } }
Perhatian : Untuk Program ini tdk dapat di jalankan j alankan pada OS Windows XP Pastikan Driver WLAN terinstal di Netbook or PC jika tidak akan menyebabkan Sistem Windows Crash Penjelasan Kode :
Buat lah Project / file baru. Kemudian masuk ke bagian code program. Pada program diatas kita membutuhkan namespase :
using System.Diagnostics; System.Diagnostics; using System.Security.Principa System.Security.Principal; l;
50
using System.Net; using System.Net;
kemudian double klik pada button Start dan tuliskan perintrah dibawah ini : string ssid string ssid = textBox1.Text, key = textBox2.Text; if (!connect) if (!connect) { if (textBox1.Text if (textBox1.Text == null null || || textBox1.Text == "" "") ) { MessageBox.Show( MessageBox .Show("Anda "Anda Belum Mengisi SSID !", !" , "Informasi" "Informasi", , MessageBoxButtons.OK, MessageBoxButtons .OK, MessageBoxIcon MessageBoxIcon.Information); .Information); } else { if (textBox2.Text if (textBox2.Text == null null || || textBox2.Text textBox2.Text == "" "") ) { MessageBox.Show( MessageBox .Show("Anda "Anda Belum Mengisi Password !", !" , "Informasi", "Informasi" , MessageBoxButtons MessageBoxButtons.OK, .OK, MessageBoxIcon .Information); } else { if (key.Length if (key.Length >= 6) { bsi_hotspot(ssid, bsi_hotspot(ssid, key, true true); ); textBox1.Enabled = false false; ; textBox2.Enabled = false false; ; button1.Text button1.Text = "Berhenti" "Berhenti"; ; connect = true true; ; } else { MessageBox.Show( MessageBox .Show("Password "Password harus 6 karakter atau lebih !", !", "Information" "Information", , MessageBoxButtons.OK, MessageBoxButtons .OK, MessageBoxIcon .Information); } } } } Else { bsi_hotspot( null null, , null null, , false false); ); textBox1.Enabled = true true; ; textBox2.Enabled = true true; ; button1.Text button1.Text = "Start" "Start"; ; x = false false; ; }
Pada text box 1 dan 2 masih kosong maka akan muncul pesan dalam bentuk message box. Password harus lebih bisar dari 6 karakter. Setelah itu buat lah sebuah method baru dengan nama bsi_hotspot. Method baru inilah yang akan menjalankan fungsi utamanya sebagai hotspot :
private void void bsi_hotspot( bsi_hotspot(string string ssid, ssid, string string key, key,bool bool status) status) { ProcessStartInfo processStartInfo ProcessStartInfo processStartInfo = new ProcessStartInfo( ProcessStartInfo ("cmd.exe" "cmd.exe"); ); processStartInfo.Redirec processStartInfo.RedirectStandardInp tStandardInput ut = true true; ; processStartInfo.Redirec processStartInfo.RedirectStandardOut tStandardOutput put = true true; ; processStartInfo.CreateN processStartInfo.CreateNoWindow oWindow = true true; ; processStartInfo.UseShellExecute = false false; ;
51
Process process Process process = Process Process.Start(processStartInfo); .Start(processStartInfo); if (process != null if (process null) ) { if (status) if (status) { process.StandardInput.WriteLine("netsh process.StandardInput.WriteLine( "netsh hostednetwork mode=allow ssid=" + ssid=" + ssid // pemangilan untuk membuat SSID process.StandardInput.WriteLine("netsh process.StandardInput.WriteLine( "netsh network"); network" ); process.StandardInput.Close(); } else { process.StandardInput.WriteLine("netsh process.StandardInput.WriteLine( "netsh hostednetwork" ); process.StandardInput.Close(); } }
wlan set + " key=" + key=" + key); wlan start hosted
wlan stop
}
Selanjutnya buatlah dua method baru yang mendeskripsikan bahwa komputer anda adalah seorang administrator dan sebuah method untuk merestartfungsi dari hotspot :
public static bool bool IsAdmin() IsAdmin() { WindowsIdentity id WindowsIdentity id = WindowsIdentity WindowsIdentity.GetCurrent(); .GetCurrent(); WindowsPrincipal p WindowsPrincipal p = new WindowsPrincipal WindowsPrincipal(id); (id); return p.IsInRole( return p.IsInRole(WindowsBuiltInRole WindowsBuiltInRole.Administrator); .Administrator); } public void RestartElevated() RestartElevated() { ProcessStartInfo startInfo ProcessStartInfo startInfo = new ProcessStartInfo (); startInfo.UseShellExecute startInfo.UseShellExecute = true true; ; startInfo.CreateNoWindow startInfo.CreateNoWindow = true true; ; startInfo.WorkingDirector startInfo.WorkingDirectory y = Environment Environment.CurrentDirectory; .CurrentDirectory; startInfo.FileName startInfo.FileName = System.Windows.Forms. System.Windows.Forms.Application Application.ExecutablePath; .ExecutablePath; startInfo.Verb startInfo.Verb = "runas" "runas"; ; try { Process p Process p = Process Process.Start(startInfo); .Start(startInfo); } catch { } System.Windows.Forms.Application System.Windows.Forms. Application.Exit(); .Exit(); }
Terakhir jangan lupa mendeskripsikannya pada constructornya :
InitializeComponent(); if (!IsAdmin()) { RestartElevated(); } bsi_hotspot( null null, ,null null, ,false false); ); Application.Exit() Application .Exit()
52
PERTEMUAN XIV PENGENALAN SOCKET
Apakah itu socket?
Socket adalah salah satu layer application yang menghubungkan aplikasi dengan Network Card dari Komputer. Melalui Socket ini, kita dapat melalukan komunikasi di beberapa komputer atau device lainnya.Implementasi dari socket akan berbeda berdasarkan Operating System S ystem yang digunakan tetapi secara sistem transfer datanya akan sama.
Socket Pada Framework.Net
Framework.Net telah menyedikan library untuk mengimplementasikan layanan internet dalam aplikasi dengan mudah.untuk mengakses library socket,kita dapat memanfaatkan namespace System.Net dan System.Net.Socket.
Sistem Socket Pada Jaringan Komputer
Pada umumnya, socket dalam jaringan komputer dikenal berdasarkan oreintasi koneksinya. ini terbagi menjadi 1. Connection Oriented, Antar Socket saling mengikat dan berhubungan sebelum socket akan mengirimkan data. 2. Connectionsless Oriented. Antar socket tidak terikat selaman ya hanya terikat ketika melakukan pengiriman dan penerimaan data selanjutnya putus Tabel Port Port Number
Protocol
20
FTP
21
FTP
25
SMTP (Email Outgoing)
53
DNS
80
HTTP (Web)
110
POP3 (email incoming)
143
IMAP (email incoming)
Pemprograman Pemprograman Jaringan TCP/IP
Pada Sistem Jaringan TCP/IP menerapkan sistem connection-oriented artinya server dan client melakukan koneksi terlebih dahulu sebelum melakuakan transfer data, sedangkan fremework.NET, kita dapat memanfaatkan library socket yang terdapat pada namespace System.Net.Sockets. 53
Implementasi Implementasi Socket pada Sistem Client-Server
Dalam pemprogaman jaringan komputer, kita memahami bagimana sistem kerja dari socket itu sendiri, oleh karena itu hal yang paling mudah untuk memahami prinsip kerja dari socket ini yaitu melalui sistem client-server.
1. Socket TCP/IP Pada framework.NET, penggunaan socket untuk jaringan TCP/IP dapat menggunakan kelas TCPListner. TcpListener server = new TcpListener(IPLocal, TcpListener(IPLocal, port);
untuk menjalankan socketnya cukup memanggil method Start(), server.Start();
2. Listen Listen merupakan proses menunggu suatu koneksi yang akan terhubung dengan socket pada port yang telah dibuat oleh socket.untuk melakukan proses listen, cukup dengan method Start(). 3. Accept Jika ada socket client yang terhubung dengan server maka server dapat menerima koneksi ini dengan menggunakan method AcceptTcpClient() yang mengembalikan socket client yaitu TcpClient.Berikut implementasinya: TcpClient client=server.AccepTcpCl client=server.AccepTcpClient(); ient();
Selanjutnya kita akan membahas bagimana proses socket pada client.untuk sistem clientnya perhatikan gambar berikut
54
4. Socket Client Untuk membuat socket client,cukup dengan menggunakan kelas TcpClient, Berikut cara membuat socketnya: TcpClient client=new client TcpClient(server,port); TcpClient(server,port);
Dimna : Server adalah Ip Address server dengan string format .dot(.) contoh "192.168.0.5" Port server yang digunakan oleh server untuk proses listen. 5. Address Resolution Ini merupakan proses validasi Ip Address dari server. Dalam hal ini, kita perlu melalukannya karena kelas TcpClient akan melakukan sndiri pada saat instasiasi kelas TcpClient Pemrograman Pemrograman Jaringan UDP/IP
Pada sistem jaringan UDP menerapkan sistem connectionless-oriented artinya pada saat melakukan hubungan antara server dan client tidak memerlukan koneksi terlebih dahulu untuk melakukan proses transfer data.dalam mendalami pemrograman jaringan UDP/IP, framework.NET telah menyediakan kelas yang berguna yaitu UDPClient, dengan menggunakan kelas ini kita dapat memoptimalkan pemrograman jaringan berbasis UDP/IP
55
Kita akan bahas satu persatu bagian dari gambar tersebut: 1. Socket untuk socket UDP/IP, cukup menggunakan kelas UdpClient. untuk Server: Int32 port = 9077; UdpClient udpserver=new UdpClient(port); UdpClient(port);
untuk Client: UdpClient udpclient=new UdpClient();
2. Listen Proses ini hanya ada pada server, Untuk melakukan ini,Cukup kita memanggil method Receive(). Method ini akan melakukan proses Listen pada port yang telah diisi pada kelas UdpClient. 3. Receipt Pada saat kita memanggil method Receive() maka method ini akan mengembalikan array byte dari data yang telah dikirim client.Berikut i ni cara pemakaiannya. IPEndPoint RemoteIPEndPoint =null; Byte[] receiveBytes=udpserver.Re receiveBytes=udpserver.Receive(ref ceive(ref RemoteIPEndPoint); RemoteIPEndPoint); String returnData System.Text.Encoding.ASC System.Text.Encoding.ASCII.GetString II.GetString(receiveBytes (receiveBytes); );
4. Send Kelas Udp Client juga menyediakan method untuk mengirim data yaitu send().Berikut ini cara mengirim data ke server: Int32 port =9077; String Ipserver="192.168.0.5"; Ipserver="192.168.0.5"; String msg="HEllo C# BSI"; Byte[] databytes=System.Text.Enc databytes=System.Text.Encoding.ASCII.G oding.ASCII.GetBytes(msg) etBytes(msg); ; IPEndPoint endPoint = new IPEndPoint(IPAddress.Par IPEndPoint(IPAddress.Parse(IPServer) se(IPServer),port);udpcli ,port);udpclient.Send(dat ent.Send(databytes,databy abytes,databytes. tes. Length, endPoint);
56
APLIKASI CLIENT – SERVER SERVER UDP SEDERHANA
Aplikasi untuk Server UDP
Adapun komponen nya adalah: NO
Component Name
Text
Name
1
ListBox Label TextBox
UDP SERVER PORT 1010
listBox1 label1 textBox1
2 3
Listing Program: using System; using System; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel; using System.Data; using System.Data; using System.Drawing; System.Drawing;
57
using System.Linq; using System.Linq; using System.Text; using System.Text; using System.Windows.Forms; System.Windows.Forms; using System.Net; using System.Net; using System.Net.Sockets; System.Net.Sockets; using System.Threading; System.Threading; using System.IO; using System.IO; namespace Tugas_1_ServerUDP Tugas_1_ServerUDP { public partial class Form1 Form1 : : Form { public Form1() public Form1() { InitializeComponent(); } private void serverThread() serverThread() //membuat metode { UdpClient clUdp UdpClient clUdp = new UdpClient UdpClient( (int int.Parse(textBox1.Text)); .Parse(textBox1.Text)); //membuat sebuah objek udpclient baru while( while (true true) ) { IPEndPoint remoteIp IPEndPoint remoteIp = new IPEndPoint IPEndPoint( (IPAddress IPAddress.Any, .Any, 0); //membuat sebuah objek ipendpoint yg akan mengirim paket byte[] byte [] receiveByte = clUdp.Receive(ref clUdp.Receive( ref remoteIp); remoteIp); string returnData string returnData = Encoding Encoding.ASCII.GetString(receiveByte); .ASCII.GetString(receiveByte); //untuk memberikan delegasi kepada listbox listBox1.Invoke( new MethodInvoker MethodInvoker ( (delegate delegate() () { listBox1.Items.Add(remoteI listBox1.Items.Add(remoteIp.Address.To p.Address.ToString() String() + " : " + returnData.ToString()); returnData.ToString()); })); } } private void void Form1_Load( Form1_Load(object object sender, sender, EventArgs EventArgs e) e) { Thread svrThread Thread svrThread = new Thread Thread( (new ThreadStart ThreadStart(serverThread)); (serverThread)); svrThread.Start(); } } }
Penjelasan Kode program untuk Server UDP:
1. Klik menu File, pilih New Project, pilih WindowsFormsApplication, kemudian klik Ok. 2. Kemudian masuk ke lembar listing program, ketik : using System.Net; using System.Net; using System.Net.Sockets; System.Net.Sockets; using System.Threading; System.Threading; using System.IO; using System.IO;
untuk library tambahan penggunaan soket UDP pada server dan client.
58
3. Pada Listing dibawah ini digunakan untuk membuat metode , agar server terhubung ke client. private void serverThread() serverThread() //membuat metode { UdpClient clUdp UdpClient clUdp = new UdpClient( UdpClient (int int.Parse(textBox1.Text)); .Parse(textBox1.Text)); //membuat sebuah objek udpclient baru while( while (true true) ) { IPEndPoint remoteIp IPEndPoint remoteIp = new IPEndPoint IPEndPoint( (IPAddress IPAddress.Any, .Any, 0); //membuat sebuah objek ipendpoint yg akan mengirim paket byte[] byte [] receiveByte = clUdp.Receive(ref clUdp.Receive( ref remoteIp); remoteIp); string returnData string returnData = Encoding Encoding.ASCII.GetString(receiveByte); .ASCII.GetString(receiveByte); //untuk memberikan delegasi kepada listbox listBox1.Invoke( new MethodInvoker MethodInvoker ( (delegate delegate() () { listBox1.Items.Add(remot listBox1.Items.Add(remoteIp.Address. eIp.Address.ToString() ToString() + " : " + " + returnData.ToString()); })); } }
4. Pada Listing dibawah ini digunakan pada saat form di run metode yang digunakan diatas akan berfungsi . private void void Form1_Load( Form1_Load(object object sender, sender, EventArgs EventArgs e) e) { Thread svrThread Thread svrThread = new Thread Thread( (new ThreadStart ThreadStart(serverThread)); (serverThread)); svrThread.Start(); }
59
PERTEMUAN XV Pengenalan Socket II
Aplikasi Untuk Client UDP
Adapun komponen nya adalah: NO
Component Name
Text
Name
1
TextBox TextBox TextBox Label Label Label Button
1010 Server Port Message SEND
textPort textAlmt textPesan label1 label2 Label3 button1
2 3
Listing Program: using System; using System; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel; using System.Data; using System.Data; using System.Drawing; System.Drawing; using System.Linq; using System.Linq; using System.Text; using System.Text; using System.Windows.Forms; System.Windows.Forms; using System.Net; using System.Net; using System.Net.Sockets; System.Net.Sockets; using System.Threading; System.Threading; using System.IO; using System.IO; namespace Tugas_1_ClientUDP Tugas_1_ClientUDP { public partial class Form1 Form1 : : Form { public Form1() public Form1() { InitializeComponent(); }
60
private void void button1_Click( button1_Click(object object sender, sender, EventArgs EventArgs e) e) { UdpClient ucl UdpClient ucl = new UdpClient UdpClient(); (); try { ucl.Connect(textAlmt.Text, int int.Parse(textPort.Text)); .Parse(textPort.Text)); //menghungkan ke server Byte[] Byte [] datasend = Encoding Encoding.ASCII.GetBytes(textPesan.Text); .ASCII.GetBytes(textPesan.Text); //merubah string menjadi byte ucl.Send(datasend, datasend.Length); //mengirim data ke server ucl.Close(); } catch ( catch (Exception Exception ex) ex) { MessageBox.Show(ex.Message); MessageBox .Show(ex.Message); } } } }
Penjelasan Kode program untuk Client UDP:
1. Klik menu File, pilih New Project, pilih WindowsFormsApplication, kemudian klik Ok. 2. Kemudian masuk ke lembar listing program, ketik : using System.Net; using System.Net; using System.Net.Sockets; System.Net.Sockets; using System.Threading; System.Threading; using System.IO; using System.IO;
untuk library tambahan penggunaan soket UDP UDP pada server dan client . 3. Pada Listing dibawah ini digunakan sebuah button yang berfungsi menghubungkan client ke server, mengirimkan data ke server. private void button1_Click( button1_Click( object object sender, sender, EventArgs EventArgs e) e) { UdpClient ucl UdpClient ucl = new UdpClient UdpClient(); (); try { ucl.Connect(textAlmt.Text, int int.Parse(textPort.Text)); .Parse(textPort.Text)); //menghungkan ke server Byte[] Byte [] datasend = Encoding Encoding.ASCII.GetBy .ASCII.GetBytes(textPesa tes(textPesan.Text); n.Text); //merubah string menjadi byte ucl.Send(datasend, datasend.Length); //mengirim data ke server ucl.Close(); } catch (Exception catch ( Exception ex) ex) { MessageBox.Show(ex.Message); MessageBox .Show(ex.Message); } }
61
*Tambahan Cara penggunaan nya , bersamaan.
Run
kedua form sever dan client secara
62
PERTEMUAN XVI MULTIPLEXING SOCKET
Jika sebuah aplikasi mencoba untuk membaca dari soket buffer yang kosong atau menulis ke soket yang buffer penuh, soket biasanya akan memblokir; jeda aplikasi sampai itu dapat menyelesaikan operasi. Ini adalah masalah jika aplikasi bekerja dengan lebih dari satu soket pada suatu waktu. Sebagai contoh, perhatikan sebuah program dengan terbuka dua soket, s1 dan s2, yang mencetak setiap masukan yang diterima pada soket ke layar. Tidak ada data ini tersedia pada soket salah. Jika J ika program membaca S1, eksekusi blok sampai data tersedia pada soket itu. Sementara itu, data yang bisa tiba di s2, tetapi program tidak pernah menerimanya. Solusi yang lebih baik adalah untuk memblokir pada soket keduanya secara bersamaan.
PORT SCANNER Port Scanning adalah aktivitas yang dilakukan untuk memeriksa status port TCP dan UDP pada sebuah mesin. Banyak aplikasi yang menawarkan fasilitas untuk melakukan pemeriksaan port pada sebuah mesin, seperti netcat, unicornscan.
a. Berikut adalah komponen yang di perlukan.
TextBox
txtIP
ComboBox 1
numStart
ComboBox 2
numEnd
Button 1
btnScan
TextBox
txtLog
ProgressBar
prgScanning
63
b. Ketikan listing di bawah ini. Code Program :
using System; using System; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel; using System.Data; using System.Data; using System.Drawing; System.Drawing; using System.Text; using System.Text; using System.Net.Sockets; System.Net.Sockets; using System.Windows.Forms; System.Windows.Forms; namespace PortScanner namespace PortScanner { public partial classfrmMain class frmMain : : Form { protectedint StartPort; protectedint EndPort; public frmMain() public frmMain() { InitializeComponent(); } privatevoid btnScan_Click( btnScan_Click(object object sender, sender, EventArgs EventArgs e) e) { // Store values from the NumericUpDown to variables StartPort = Convert Convert.ToInt32(numStart.Value); .ToInt32(numStart.Value); EndPort = Convert Convert.ToInt32(numEnd.Value); .ToInt32(numEnd.Value); // Reset the progress bar prgScanning.Value prgScanning.Value = 0; // Set the max value of the progress bar prgScanning.Maximum prgScanning.Maximum = EndPort - StartPort + 1; // Let the user know the application is busy Cursor.Current Cursor .Current = Cursors Cursors.WaitCursor; .WaitCursor; // Loop through the ports between start port and end port for ( for (int int CurrPort CurrPort = StartPort; CurrPort <= EndPort; CurrPort++) { TcpClient TcpScan TcpClient TcpScan = new newTcpClient TcpClient(); (); try { TcpScan.Connect(txtIP.Te TcpScan.Connect(txtIP.Text, xt, CurrPort); // Try to connect // If there's no exception, we can say the port is open txtLog.AppendText("Port txtLog.AppendText("Port " + " + CurrPort + " open\r\n"); open\r\n" ); } catch { // An exception occured, thus the port is probably closed txtLog.AppendText("Port txtLog.AppendText("Port " + " + CurrPort + " closed\r\n"); closed\r\n" ); } // Increase the progress on the progress bar prgScanning.PerformStep(); } Cursor.Current Cursor .Current = Cursors Cursors.Arrow; .Arrow;
64
// Set the cursor back to normal } } }
Penjelasan Kode :
Buat lah Project / file baru. Kemudian masuk ke bagian code program. Pada program using System.Net.Sockets; System.Net.Sockets; “ kemudian diatas kita membutuhkan namespase “using double klik pada button scan dan tuliskan perintrah dibawah ini : StartPort = Convert Convert.ToInt32(numStart.Value); .ToInt32(numStart.Value); EndPort = Convert Convert.ToInt32(numEnd.Value); .ToInt32(numEnd.Value); prgScanning.Value prgScanning.Value = 0; prgScanning.Maximum prgScanning.Maximum = EndPort - StartPort + 1; Cursor.Current Cursor .Current = Cursors Cursors.WaitCursor; .WaitCursor; for (int for ( int CurrPort CurrPort = StartPort; CurrPort <= EndPort; CurrPort++) { TcpClient TcpScan TcpClient TcpScan = new newTcpClient TcpClient(); (); Try { TcpScan.Connect(txtIP.Te TcpScan.Connect(txtIP.Text, xt, CurrPort); txtLog.AppendText("Port txtLog.AppendText("Port " + " + CurrPort + " open\r\n"); open\r\n"); } catch { txtLog.AppendText("Port txtLog.AppendText("Port " + " + CurrPort + " closed\r\n"); closed\r\n"); } prgScanning.PerformStep(); } Cursor.Current Cursor .Current = Cursors Cursors.Arrow; .Arrow;
Catatan: -Pada Aplikasi ini menscan port jaringan j aringan mana saja yang terbuka dan yang tertutup. -Total maksimum jumlah port untuk setiap protokol transport yang digunakan adalah 65536 buah.
65
PERTEMUAN XVII DNS
Protokol jaringan tidak hanya digunakan untuk memindahkan data dari satu titik ke titik lain. Beberapa protokol memiliki tujuan tertentu yang membantu menjaga Internet traffic mengalir dan membuat menggunakan jaringan lebih mudah. Protokol Protokol utilitas ini mungkin tidak diperlukan untuk setiap aplikasi jaringan , namun, karena ini adalah teknologi berkembang, banyak pengembang tidak mengtahui bagaimana menerapkan fitur tersebut. Dengan memanfaatkan teknologi ini, dimungkinkan untuk menambahkan fitur unik untuk produk , yang mungkin menyatakan bahwa keunggulan kompetitif. Bab ini menjelaskan DNS dengan pembahasan protokol utilitas yang menarik yang dikembangkan oleh Microsoft, bernama WM I. DNS beroperasi pada UDP port 53 dan dijelaskan dalam RFC 1010, RFC 1304, RFC 1035, dan RFC 1183. DNS adalah untuk mengubah nama domain domain menjadi alamat IP karena orang merasa sulit untuk mengingat string angka lebih dari sembilan digit. DNS dikembangkan untuk menyediakan sistem yang mengkonversi mudah dikenali nama domain menjadi alamat IP. Tidak ada komputer pusat menyimpan daftar nama domain terhadap alamat IP. Sebaliknya, Sebaliknya, jaringan di seluruh dunia menyimpan informasi ini di server DNS. setiap Situs web biasanya akan terdaftar pada dua server DNS, mesin ini dikatakan otoritatif dalam domain. DNS server secara rutin mengecek setiap permintaan lainnya untuk informasi terbaru. Anda dapat menggunakan DNS.GetHostByName untuk mengkonversi nama domain (string) ke alamat IP (IPHostEntry). Kebalikan dari tindakan ini, mengubah mengubah sebuah IP IP alamat untuk nama domain, dapat dicapai dengan menggunakan DNS. GetHostByAddress. Ada lebih dari DNS mengubah alamat IP untuk nama domain domain dan sebaliknya, sebaliknya, Bahkan, sebagian besar DNS penanganan di belakang layar, dan paling pemrograman jaringan tingkat tinggi jarangmengetahui IP alamat server atau klien dengan yang berkomunikasi.
DNS ADDRESS RESOLVER
Berikut ini adalah Program untuk aplikasi penangkap DNS dimna kita memasukan sebuah nama website lalu kita mencari DNS (IP DNS) dari website tersebut, perlu diperhatikan aplikasi ini berjalan mencari DNS berdasarkan Domain yang di daftarkan ke penyedia layanan Domain. sehingga memerlukan jaringan yang aktif terkoneksi dengan Internet. a. Buatlah Project Baru dengan nama DNS_RESOLVER b. Tidak perlu mendesain form dikarenakan kita akan mendesain form lewat constraktornya(desain langsung dengan list program ).
66
Code program Lengkap :
using System; using System; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel; using System.Data; using System.Data; using System.Drawing; System.Drawing; using System.Text; using System.Text; using System.Windows.Forms; System.Windows.Forms; using System.Net; using System.Net; namespace WindowsFormsApplication3 WindowsFormsApplication3 { public partial class Form1 Form1 : : Form { TextBox address; TextBox address; ListBox results; ListBox results; private AsyncCallback AsyncCallback OnResolved; OnResolved; public Form1() public Form1() { InitializeComponent(); Text = "DNS Address Resolver"; Resolver" ; Size = new Size Size(400, (400, 380); OnResolved = new AsyncCallback AsyncCallback(Resolved); (Resolved); Label label1 Label label1 = new Label Label(); (); label1.Parent = this this; ; label1.Text = "Enter address to resolve:"; resolve:" ; label1.AutoSize label1.AutoSize = true true; ;
67
label1.Location label1.Location = new Point Point(10, (10, 10); address = new TextBox TextBox(); (); address.Parent address.Parent = this this; ; address.Size address.Size = new Size Size(200, (200, 2 * Font.Height); address.Location = new Point Point(10, (10, 35); results = new ListBox ListBox(); (); results.Parent results.Parent = this this; ; results.Location = new Point Point(10, (10, 65); results.Size results.Size = new Size Size(350, (350, 20 * Font.Height); Button checkit Button checkit = new Button Button(); (); checkit.Parent checkit.Parent = this this; ; checkit.Text checkit.Text = "Resolve" "Resolve"; ; checkit.Location = new Point Point(235, (235, 32); checkit.Size checkit.Size = new Size Size(7 (7 * Font.Height, 2 * Font.Height); checkit.Click += new EventHandler (ButtonResolveOnClick); } void ButtonResolveOnClick( ButtonResolveOnClick(object object obj, obj, EventArgs EventArgs ea) ea) { results.Items.Clear(); string addr string addr = address.Text; Object state Object state = new newObject Object(); (); Dns.BeginResolv Dns .BeginResolve(addr, e(addr, OnResolved, state); } private void Resolved( void Resolved(IAsyncResult IAsyncResult ar) ar) { string buffer; string buffer; IPHostEntry iphe IPHostEntry iphe = Dns Dns.EndResolve(ar); .EndResolve(ar); buffer = "Host name: " + " + iphe.HostName; iphe.HostName; results.Items.Add(buffer); foreach(string foreach( string alias alias in in iphe.Aliases) iphe.Aliases) { buffer = "Alias: " + " + alias; results.Items.Add(buffer); } foreach(IPAddress foreach( IPAddress addrs addrs in iphe.AddressList) iphe.AddressList) { buffer = "Address: " + " + addrs.ToString(); addrs.ToString(); results.Items.Add(buffer); } } private void Form1_Load( void Form1_Load(object object sender, sender, EventArgs EventArgs e) e) { } } }
Penjelasan listing program:
1. Buatlah project / file baru dengan cara klik menu File, pilih New Project, pilih WindowsFormsApplication,kemudian klik Ok. 2. Kemudian masuk ke file source program, tambahkan namespace namespace dengan using System.Net; using System.Net; untuk library tambahan. Untuk penjelasan using System.Net; lihat di bab sebelumnya .
68
3. Buatlah variable untuk mendeskripsikan textbox dan listview dengan code dibawah ini. TextBox address; TextBox address; listBox results; listBox results; private AsyncCallback AsyncCallback OnResolved; OnResolved;
4. Pada method ini yang akan ditampilkan berdasarkan listing diatas adal a sebuah text box,label,button box,label,button dan listbox. Text box berfungsi berfungsi untuk menginput DNS nya untuk mencari alamat IP nya. 5. Listbox berfungsi untuk melihat hasil IP address nya. public Form1() public Form1() { InitializeComponent(); Text = "DNS Address Resolver"; Resolver" ; Size = new newSize Size(400, (400, 380); OnResolved = new newAsyncCallback AsyncCallback(Resolved); (Resolved); Label label1 Label label1 = new newLabel Label(); (); label1.Parent = this this; ; label1.Text = "Enter address to resolve:" resolve:"; ; label1.AutoSize label1.AutoSize = true true; ; label1.Location label1.Location = new newPoint Point(10, (10, 10); address = new newTextBox TextBox(); (); address.Parent address.Parent = this this; ; address.Size = new newSize Size(200, (200, 2 * Font.Height); Font.Height); address.Location address.Location = new newPoint Point(10, (10, 35); results = new newListBox ListBox(); (); results.Parent results.Parent = this this; ; results.Location results.Location = new newPoint Point(10, (10, 65); results.Size = new newSize Size(350, (350, 20 * Font.Height); Font.Height); Button checkit Button checkit = new newButton Button(); (); checkit.Parent checkit.Parent = this this; ; checkit.Text = "Resolve" "Resolve"; ; checkit.Location checkit.Location = new newPoint Point(235, (235, 32); checkit.Size = new newSize Size(7 (7 * Font.Height, 2 * Font.Height); checkit.Click += new newEventHandler EventHandler (ButtonResolveOnClick); }
6. Pada bagian berikut ini adalah perintah ketika button di klik dan
menemukan IP address dari sebuah DNS yang ingin dicari. 7. pada method ini digunakan untuk mencari alamat IP dari DNS yang yang diketik IPHostEntry iphe iphe = Dns Dns.EndResolve(ar); .EndResolve(ar); dengan perintah IPHostEntry private void Resolved( void Resolved(IAsyncResult IAsyncResult ar) ar) { string buffer; string buffer; IPHostEntry iphe IPHostEntry iphe = Dns Dns.EndResolve(ar); .EndResolve(ar); buffer = "Host name: " + " + iphe.HostName; iphe.HostName; results.Items.Add(buffer); foreach( foreach (string string alias alias in iphe.Aliases) iphe.Aliases) { buffer = "Alias: " + " + alias; results.Items.Add(buffer); } foreach( foreach (IPAddress IPAddress addrs addrs in iphe.AddressList) iphe.AddressList)
69
{ buffer = "Address: " + " + addrs.ToString(); addrs.ToString(); results.Items.Add(buffer); } }
70
PERTEMUAN XVIII SOCKET PROGRAMING
Pada saat suatu aplikasi berkomunikasi, awalnya aplikasi membuat socket baru, maka pada aplikasi tersebut akan diberikan nomer yang digunakan sebagai referensi socket . Jika ada suatu sistem yang menggunakan nomer referensi socket tersebut, maka akan terjalin suatu jaringan komunikasi antar komputer sebaik transfer data local.Untuk berkomunikasi dengan server, client harus tahu nomor IP server begitu juga nomor port port yang dituju, dituju, nomor port menunjukkan menunjukkan service yang yang dijalankan. Contoh port 23 untuk Telnet Server, port 25 (SMTP) untuk Mail Server dan port 80 (HTTP) untuk Web Server. Dalam hal ini aplikasi di client sudah mengetahui port yang akan dituju. Contoh program aplikasi di client yang meminta service di server ada ftp, telnet, ssh. Untuk melihat service bisa dilihat pada file /etc/services.Program yang berjalan di server, akan berjalan sepanjang waktu (disebut sebagai daemon) sampai mesin/service dimatikan, menunggu request dari client sesuai service yang diminta 1. UDP (User Data Protocol) User Datagram Protocol (UDP) adalah salah satu protokol lapisan transpor TCP/IP TCP/ IP yang mendukung komunikasi yang tidak andal (unreliable), tanpa koneksi (connectionless) antara host-host dalam jaringan yang menggunakan TCP/IP. UDP memiliki karakteristik-karakteristik berikut: a. Connectionless (tanpa koneksi): Pesan-pesan UDP akan dikirimkan tanpa harus dilakukan proses negosiasi koneksi antara dua host yang hendak berukar informasi. b. Unreliable (tidak andal): Pesan-pesan UDP akan dikirimkan sebagai datagram tanpa adanya nomor urut atau pesan acknowledgment. Protokol lapisan aplikasi yang berjalan di atas UDP harus melakukan pemulihan terhadap pesan-pesan yang hilang selama transmisi. Umumnya, protokol lapisan aplikasi yang berjalan di atas UDP mengimplementasikan layanan keandalan mereka masing-masing, atau mengirim pesan secara periodik atau dengan menggunakan waktu yang telah didefinisikan. c. UDP menyediakan mekanisme untuk mengirim pesan-pesan ke sebuah protokol lapisan aplikasi atau proses tertentu di dalam sebuah host dalam jaringan yang menggunakan TCP/IP. Header UDP berisi field Source Process Identification dan Destination Process Identification. d. UDP menyediakan penghitungan checksum berukuran 16-bit terhadap keseluruhan pesan UDP
2. SMTP SMTP digunakan untuk mengirim, tapi tidak dapat menerima, email. Setiap mail server di dunia dunia harus sesuai dengan standar SMTP untuk mengirim email tanpa tujuan. Panduan definitif untuk SMTP dipegang oleh Internet Engineering Task Force (IETF),SMTP beroperasi pada port 25.
71
Aplikasi
Chating
Aplikasi chatting sudah mulai banyak dibuat semenjak teknologi internet mulai ada. Banyak program chating yang di buat baik yang online maupun yang yang ofline (Intranet), selain itu penggunaan socket pun berbeda-beda ada yang menggunakan socket UDP, TCP, FTP. Kita akan mencoba membuat Aplikasi Chating dengan menggunakan Socket UDP pada pengiriman datanya, Type: label Text: Nama
Type: textbox Name: tx_user
Type: richTextBox Name: rich_chat Type: button Name: bt_selesai Text: Selesai
Type: textbox Name: tx_kirim Type: button Name: bt_kirim
Type: button Name: bt_mulai Text: Mulai
Ketikan listing berikut ini: using System; using System; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel; using System.Data; using System.Data; using System.Drawing; System.Drawing; using System.Linq; using System.Linq; using System.Text; using System.Text; using System.Windows.Forms; System.Windows.Forms; using System.Net; using System.Net; using System.Net.Sockets; System.Net.Sockets; using System.Threading; System.Threading;
72
namespace chating namespace chating { publicpartialclassForm1 publicpartialclass Form1 : : Form { delegatevoid AddMessage AddMessage( (string string message); message); string nama_user; string nama_user; int port int port = 11000; string broadcast; string broadcast; IPAddress alamat_broadcast IPAddress alamat_broadcast = IPAddress IPAddress.Broadcast; .Broadcast; UdpClient penerima_client UdpClient penerima_client = new newUdpClient UdpClient(11000); (11000); UdpClient pengirim_client; pengirim_client; Thread jalur_penerima; jalur_penerima; public Form1() public Form1() { InitializeComponent(); this.Load this .Load += new EventHandler (Form1_Load); bt_kirim.Click bt_kirim.Click += new newEventHandler EventHandler (bt_kirim_Click); this.ActiveCont this .ActiveControl rol = tx_user; rich_chat.ReadOnly = true true; ; tx_kirim.Enabled = false false; ; bt_kirim.Enabled = false false; ; bt_selesai.Enabled = false false; ; } private void Form1_Load( void Form1_Load(object object sender, sender, EventArgs EventArgs e) e) { ThreadStart mulai ThreadStart mulai = new newThreadStart ThreadStart(penerima); (penerima); jalur_penerima jalur_penerima = new newThread Thread(mulai); (mulai); jalur_penerima.IsBackgro jalur_penerima.IsBackground und = true true; ; jalur_penerima.Start(); } private void aksi() void aksi() { tx_kirim.Text tx_kirim.Text = tx_kirim.Text.TrimEnd(); tx_kirim.Text.TrimEnd(); if (! if (!string string.IsNullOrEmpty(tx_kirim.Text)) .IsNullOrEmpty(tx_kirim.Text)) { if (nama_user if (nama_user != "" "") ) { string u_kirim string u_kirim = "<" "<" + + nama_user + "> : " + " + tx_kirim.Text; byte[] byte [] data = Encoding.ASCII.GetBytes(u_kirim); Encoding .ASCII.GetBytes(u_kirim); pengirim_client.Send(dat pengirim_client.Send(data, a, data.Length); data.Length); tx_kirim.Text = "" ""; ; } else { string u_kirim string u_kirim = "<" "<" + + Environment.MachineName Environment .MachineName + "> : " + " + tx_kirim.Text; byte[] byte [] data = Encoding.ASCII.GetBytes(u_kirim); Encoding .ASCII.GetBytes(u_kirim); pengirim_client.Send(dat pengirim_client.Send(data, a, data.Length); data.Length); tx_kirim.Text = "" ""; ; } } } private void bt_kirim_Click( bt_kirim_Click(object object sender, sender, EventArgs EventArgs e) e)
73
{ aksi(); } private void penerima() void penerima() { IPEndPoint end_point IPEndPoint end_point = new IPEndPoint IPEndPoint( (IPAddress IPAddress.Any, .Any, port); AddMessage pesan_wakil AddMessage pesan_wakil = pesan_diterima; pesan_diterima; while ( while (true true) ) { byte[] byte [] data = penerima_client.Receive( penerima_client.Receive(ref ref end_point); end_point); string message string message = Encoding Encoding.ASCII.GetString(data); .ASCII.GetString(data); Invoke(pesan_wakil, Invoke(pesan_wakil, message); System.Console System.Console.Beep(1500, .Beep(1500, 300); } } private void pesan_diterima( pesan_diterima(string string pesan) pesan) { rich_chat.Text rich_chat.Text += pesan + "\n" "\n"; ; } private void tx_kirim_KeyDown( tx_kirim_KeyDown(object object sender, sender, KeyEventArgs KeyEventArgs e) e) { if (e.KeyCode if (e.KeyCode == Keys Keys.Enter) .Enter) { aksi(); } } private void bt_mulai_Click( bt_mulai_Click(object object sender, sender, EventArgs EventArgs e) e) { nama_user = Convert Convert.ToString(tx_user.Text); .ToString(tx_user.Text); broadcast=Convert broadcast= Convert.ToString(alamat_broadcast); .ToString(alamat_broadcast); pengirim_client pengirim_client = new newUdpClient UdpClient(broadcast, (broadcast, port); pengirim_client.EnableBr pengirim_client.EnableBroadcast oadcast = true true; ; tx_kirim.Enabled = true true; ; tx_user.Enabled tx_user.Enabled = false false; ; bt_mulai.Enabled = false false; ; bt_kirim.Enabled = true true; ; bt_selesai.Enabled = true true; ; } private void bt_selesai_Click( bt_selesai_Click(object object sender, sender, EventArgs EventArgs e) e) { tx_user.Enabled tx_user.Enabled = true true; ; tx_kirim.Enabled = false false; ; bt_kirim.Enabled = false false; ; bt_mulai.Enabled = true true; ; bt_selesai.Enabled = false false; ; } } }
Penjelasan listing: using System.Net; using System.Net; using System.Net.Sockets; System.Net.Sockets; using System.Threading; System.Threading;
74
//Digunakan untuk memanggil library yang akan dipakai, fungsi yang diperlukan seperti penggunaan thread, akses port dan socket delegate void AddMessage AddMessage( (string string message); message);
//fungsi “AddMessage” yang bertipe delegate void. Delegate void digunakan karena pengaksesan tool (richTextBox) dengan 2 event yang berbeda. int port = 11000; int port string broadcast; string broadcast; IPAddress alamat_broadcast IPAddress alamat_broadcast = IPAddress IPAddress.Broadcast; .Broadcast;
//mendefiniasikan variable “port” yang digunakan sebagai port yang digunakan. //variable ”broadcast” bertipe data string st ring yang nantinya akan digunakan untuk menampung alamat broadcast. //variable “alamat_broadcast” digunakan untuk menampung IP broadcast. UdpClient penerima_client = new UdpClient UdpClient penerima_client UdpClient(11000); (11000); UdpClient pengirim_client; pengirim_client;
//mendeklarasikan variable “penerima_client” dan “pengirim_client” yang menggunakan tipe UdpClient. Deklarasi UdpClient menjelaskan bahwa protocol yang digunakan pada saat pentransferan data adalah protocol UDP. Thread jalur_penerima; jalur_penerima;
//mendeklarasikan thread yang digunakan. public Form1() public Form1() { InitializeComponent(); this.Load this .Load += new newEventHandler EventHandler(Form1_Load); (Form1_Load); bt_kirim.Click bt_kirim.Click += new newEventHandler EventHandler(bt_kirim_Click); (bt_kirim_Click); this.ActiveCont this .ActiveControl rol = tx_user; rich_chat.ReadOnly rich_chat.ReadOnly = true true; ; tx_kirim.Enabled tx_kirim.Enabled = false false; ; bt_kirim.Enabled bt_kirim.Enabled = false false; ; bt_selesai.Enabled bt_selesai.Enabled = false false; ; }
//fungsi Form1 berisikan kondisi awal komponen tools yang ada pada form pada saat aplikasi dijalankan. private void Form1_Load( void Form1_Load(object object sender, sender, EventArgs EventArgs e) e) { ThreadStart mulai ThreadStart mulai = new newThreadStart ThreadStart(penerima); (penerima); jalur_penerima jalur_penerima = new newThread Thread(mulai); (mulai); jalur_penerima.IsBackgrou jalur_penerima.IsBackground nd = true true; ; jalur_penerima.Start(); }
//inisialisasi saat aplikasi menerima data dari data client/user yang lain. private void aksi() void aksi()
75
{ tx_kirim.Text = tx_kirim.Text.TrimEnd(); tx_kirim.Text.TrimEnd(); if (!string if (! string.IsNullOrEmpty(tx_kirim.Text)) .IsNullOrEmpty(tx_kirim.Text)) { if (nama_user if (nama_user != "" "") ) { string u_kirim string u_kirim = "<" "<" + + nama_user + "> : " + " + tx_kirim.Text; tx_kirim.Text; byte[] byte [] data = Encoding Encoding.ASCII.GetBytes(u_kirim); .ASCII.GetBytes(u_kirim); pengirim_client.Send(dat pengirim_client.Send(data, a, data.Length); data.Length); tx_kirim.Text = "" ""; ; } else { string u_kirim string u_kirim = "<" "<" + + Environment Environment.MachineName .MachineName + "> : " + " + tx_kirim.Text; byte[] byte [] data = Encoding Encoding.ASCII.GetBytes(u_kirim); .ASCII.GetBytes(u_kirim); pengirim_client.Send(dat pengirim_client.Send(data, a, data.Length); data.Length); tx_kirim.Text = "" ""; ; } } }
//fungsi aksi() nantinya akan digunakan pada method dari button kirim dan pada saat tombol enter ditekan ketika mengirim message. private void bt_kirim_Click( bt_kirim_Click(object object sender, sender, EventArgs EventArgs e) e) { aksi(); }
//pemanggilan fungsi aksi() pada button kirim ketika di klik. private void penerima() void penerima() { IPEndPoint end_point IPEndPoint end_point = new IPEndPoint IPEndPoint( (IPAddress IPAddress.Any, .Any, port); AddMessage pesan_wakil AddMessage pesan_wakil = pesan_diterima; while ( while (true true) ) { byte[] byte [] data = penerima_client.Receive( penerima_client.Receive(ref ref end_point); end_point); string message string message = Encoding Encoding.ASCII.GetString(data); .ASCII.GetString(data); Invoke(pesan_wakil, Invoke(pesan_wakil, message); System.Console System.Console.Beep(1500, .Beep(1500, 300); } }
//fungsi diatas merupakan fungsi yang digunakan untuk menagani setiap data yang masuk melalui port yang dugunakan. private void pesan_diterima( pesan_diterima(string string pesan) pesan) { rich_chat.Text rich_chat.Text += pesan + "\n" "\n"; ; }
//fungsi diatas merupakan fungsi yang dipanggil setelah penerima selesai mengubah data yang masuk ke data bertipe string. private void tx_kirim_KeyDown( tx_kirim_KeyDown(object object sender, sender, KeyEventArgs KeyEventArgs e) e)
76
{ if (e.KeyCode == Keys if (e.KeyCode Keys.Enter) .Enter) { aksi(); } }
//fungsi yang mendeklarasikan ketikan tombol enter ditekan private void bt_mulai_Click( bt_mulai_Click(object object sender, sender, EventArgs EventArgs e) e) { nama_user = Convert Convert.ToString(tx_user.Text); .ToString(tx_user.Text); broadcast=Convert broadcast=Convert.ToString(alamat_broadcast); .ToString(alamat_broadcast); pengirim_client pengirim_client = new UdpClient UdpClient(broadcast, (broadcast, port); pengirim_client.EnableBro pengirim_client.EnableBroadcast adcast = true true; ; tx_kirim.Enabled tx_kirim.Enabled = true true; ; tx_user.Enabled tx_user.Enabled = false false; ; bt_mulai.Enabled bt_mulai.Enabled = false false; ; bt_kirim.Enabled bt_kirim.Enabled = true true; ; bt_selesai.Enabled bt_selesai.Enabled = true true; ; }
//fungsi yang mendeklarasikan event klik pada button mulai private void bt_selesai_Click( bt_selesai_Click(object object sender, sender, EventArgs EventArgs e) e) { tx_user.Enabled tx_user.Enabled = true true; ; tx_kirim.Enabled = false false; ; bt_kirim.Enabled bt_kirim.Enabled = false false; ; bt_mulai.Enabled bt_mulai.Enabled = true true; ; bt_selesai.Enabled bt_selesai.Enabled = false false; ; }
//fungsi yang mendelklarasikan event klik pada button selesai
77
PERTEMUAN XIX Socket Programming II
Aplikasi SMTP email
Aplikasi Email Server ini menggunakan socket/port SMPT, Socket SMPT hanya mampu mengirim Email untuk menerima email, kita memerlukan socket POP3 untuk menerima email. Desain lah form seperti dibawah ini
Type : TextBox Name : t_user
Type : TextBox Name : t_password
Type : TextBox Name : t_pengirim
Type : TextBox Name : t_subject
Type : Label Name : l_user
Type : ComboBox Name : cb_akun Type : Label Name : l_pengirim Type : TextBox Name : t_penerima
Type : TextBox Name : t_server Type : TextBox Name : t_port
Type : TextBox, multiline Name : t_pesan
Type : Button Name : bit_kirim
Namespace yang akan digunakan adalah using System.Net; using System.Net; using System.Net.Mail; System.Net.Mail; using System.Text.RegularExpre System.Text.RegularExpressions; ssions;
kemudian dalam class utama for tambahkan listing berikut bool ssl_status bool ssl_status = false false; ;
list di atas digunakan untuk mendaftarkan “ssl_status” sebagai boolean dan memiliki default “false” public Form1() public Form1() { InitializeComponent();
78
this.StartPosition = FormStartPosition this.StartPosition FormStartPosition.CenterScreen; .CenterScreen; this.FormBorderSt this .FormBorderStyle yle = FormBorderStyle FormBorderStyle.FixedSingle; .FixedSingle; this.MaximizeBox this .MaximizeBox = false false; ; this.MinimizeBox this .MinimizeBox = false false; ; t_password.PasswordChar t_password.PasswordChar = '*' '*'; ; cb_akun.Items.AddRange(new cb_akun.Items.AddRange( new object object[] [] {"GMAIL" {"GMAIL", ,"YAHOO" "YAHOO"}); }); t_server.Enabled t_server.Enabled = false false; ; t_port.Enabled t_port.Enabled = false false; ; }
Pada class public form1(), berisi listing list ing yang akan dieksekusi pertama kali pada saat program dijalankan. Seperti formcenter screen, border yang tidak dapat di resize, menghilangkan tombol maximize dan minimize pada for, mendefinisikan textbox password menggunakan cahar “*”, dan menambahkan Item “gmail&yahoo” pada combobox akun, dan menonaktifkan textbox server dan Port.
private void cb_akun_SelectedIndexChan cb_akun_SelectedIndexChanged( ged(object object sender, sender, EventArgs EventArgs e) e) { if (cb_akun.SelectedIndex==0 (cb_akun.SelectedIndex==0) ) { t_server.Text = "smtp.gmail.com" "smtp.gmail.com"; ; t_port.Text = "587" "587"; ; ssl_status = true true; ; l_user.Text = "@gmail.com" "@gmail.com"; ; l_pengirim.Text l_pengirim.Text = "@gmail.com" "@gmail.com"; ; } else if (cb_akun.SelectedIndex==1) (cb_akun.SelectedIndex==1) { t_server.Text t_server.Text = "smtp.mail.yahoo.com" "smtp.mail.yahoo.com"; ; t_port.Text = "587" "587"; ; ssl_status = true true; ; l_user.Text = "@yahoo.com" "@yahoo.com"; ; l_pengirim.Text l_pengirim.Text = "@yahoo.com" "@yahoo.com"; ; } }
Pada class cb_akun merupakan baris program yang berisi pilihan dari combobox akun, yaitu jika index yang terpilih adalah 0 (gmail) maka server dan konfigurasi yang digunakan adalah dari server gmail, sedangkan jika index Noya 1 (yahoo), maka server yang digunakan adalah milik dari yahoo. private void bt_kirim_Click( bt_kirim_Click(object object sender, sender, EventArgs EventArgs e) e) { MailMessage pesan MailMessage pesan = new MailMessage MailMessage(t_pengirim.Text+l_pengirim, (t_pengirim.Text+l_pengirim, t_penerima.Text,t_subject.Text, t_pesan.Text); SmtpClient client_email SmtpClient client_email = new SmtpClient SmtpClient(t_server.Text, (t_server.Text, Convert.ToInt32(t_port.Text)); Convert.ToInt32(t_port.Text)); client_email.Credentials client_email.Credentials = new NetworkCredential (t_user.Text+l_user.Text, t_password.Text); client_email.EnableSsl client_email.EnableSsl = ssl_status; client_email.Send(pesan);
79
MessageBox.Show( MessageBox .Show("Email "Email Telah Dikirim", Dikirim" ,"Info" "Info"); ); }
Pada tombol “kirim” berisi perintah yang akan di eksekusi , pada baris “mailmessage” digunakan sebagai format pengiriman pesan yang berisi secara berurut (alamat pengirim, alamat penerima, subjek email, dan i si email). Sedangkan pada baris “smtpclient” merupakan baris program untuk memanggil Service smtp dari server penyedia layanan email yang berisi (alamat ( alamat smtp server, Port yang digunakan). Pada credential digunakan untuk mengakses akun email yang digunakan dan pasword.
Tugas 1. Buatlah Aplikasi Chating Berbasis Client Server dengan menggunakan Socket TCP/ IP (Bentuk pengiriman Tidak Broadcast). 2. Buatlah Penjelasan dari Listing yang dibuat.
80
PERTEMUAN XX FTP (FILE TRANSFER PROTOCOL)
Pengertian FTP
FTP adalah suatu protocol yang berfungsi untuk pertukaran file dalam suatu jaringan komputer yang mendukung protocol protocol TCP/IP. Dua hal pokok pada FTP yaitu FTP Server dan FTP Client, jadi fungsi FTP adalah melakukan pertukaran file dalam jaringan, FTP juga merupakan salah satu protocol internet internet yang berjalan di dalam level aplikasi yang standar untuk proses transfer file antar mesin komputer dalam sebuah framework.
Aplikasi FTP
Aplikasi ini untuk mentrasfer text pada sebuah sebuah website, aplikasi ini berbasis online .
81
Daftar Komponen NO 1 2 3 4 5 6 7 8 9 10
Komponen
Label 1 Label 2 Label 3 Label 4 Text box Text box Text box Text box Button Label 5
1 2 3 4
name
Label 1 Label 2 Label 3 Label 4 Upload
text
URL : Username : Password : Text txtUri txtUsername txtPassword txtText btnUpload lblStatus
Kode Program : using System; using System; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel; using System.Data; using System.Data; using System.Drawing; System.Drawing; using System.Linq; using System.Linq; using System.Text; using System.Text; using System.Windows.Forms; System.Windows.Forms; using System.Net; using System.Net; using System.IO; using System.IO; namespace howto_ftp_upload_text howto_ftp_upload_text { public partial class Form1 Form1 : : Form { public Form1() public Form1() { InitializeComponent(); } // Upload the text. private void void btnUpload_Click( btnUpload_Click(object object sender, sender, EventArgs EventArgs e) e) { try { this.Cursor this .Cursor = Cursors Cursors.WaitCursor; .WaitCursor; lblStatus.Text = "Working..." "Working..."; ; Application.DoEvents(); Application .DoEvents(); FtpUploadString( DateTime.Now.ToString DateTime .Now.ToString() () + ": " + " + txtText.Text, txtUri.Text, txtUsername.Text, txtPassword.Text); txtPassword.Text); lblStatus.Text = "Done" "Done"; ; } catch ( catch (Exception Exception ex) ex) { lblStatus.Text = "Error" "Error"; ; MessageBox.Show(ex.Message); MessageBox .Show(ex.Message);
82
} finally { this.Cursor this .Cursor = Cursors Cursors.Default; .Default; } } // Use FTP to upload a string into a file. private void void FtpUploadString( FtpUploadString(string string text, text, string string to_uri, to_uri, string user_name, string string password) password) { // Get the object used to communicate with the server. FtpWebRequest request FtpWebRequest request = (FtpWebRequest ( FtpWebRequest) )WebRequest WebRequest.Create(to_uri); .Create(to_uri); request.Method = WebRequestMethods WebRequestMethods. .Ftp Ftp.UploadFile; .UploadFile; // Get network credentials. request.Credentials request.Credentials = new NetworkCredential NetworkCredential(user_name, (user_name, password); // Write the text's bytes into the request stream. request.ContentLength request.ContentLength = text.Length; using ( using (Stream Stream request_stream request_stream = request.GetRequestStream( request.GetRequestStream()) )) { byte[] byte [] bytes = Encoding Encoding.UTF8.GetBytes(text); .UTF8.GetBytes(text); request_stream.Write(byte request_stream.Write(bytes, s, 0, text.Length); text.Length); request_stream.Close(); } } } }
Buat project/file baru kemudian desainlah seperti tampilan diatas. Setelah itu masuklah ke bagian code dan tambahkan namespace berikut ini : using System.Net; using System.Net; using System.IO; using System.IO;
Namespace system.net berfungsi untuk mengambil semua informasi yang berhubungan dengan jaringan(lihat pembahasan sebelumnya) sedangkan namespace IO berfungsi sebagai input dan output file.kemudian double klik pada button upload dan ketikan perintah berikut : try { this.Cursor = Cursors this.Cursor Cursors.WaitCursor; .WaitCursor; lblStatus.Text = "Working..." "Working..."; ; Application.DoEvents(); Application .DoEvents(); FtpUploadString( DateTime.Now.ToString DateTime .Now.ToString() () + ": " + " + txtText.Text, txtUri.Text, txtUsername.Text, txtPassword.Text); txtPassword.Text); lblStatus.Text = "Done" "Done"; ; } catch ( catch (Exception Exception ex) ex) { lblStatus.Text = "Error" "Error"; ; MessageBox.Show(ex.Message); MessageBox .Show(ex.Message); } finally
83
{ this.Cursor this .Cursor = Cursors Cursors.Default; .Default; }
Kemudian buat method baru dengan nama FtpUploadString. private void FtpUploadString( FtpUploadString(string string text, text, string string to_uri, to_uri, string string user_name, user_name, string password) string password) { FtpWebRequest request = (FtpWebRequest FtpWebRequest request ( FtpWebRequest) )WebRequest WebRequest.Create(to_uri); .Create(to_uri); request.Method = WebRequestMethods WebRequestMethods. .Ftp Ftp.UploadFile; .UploadFile; request.Credentials request.Credentials = new NetworkCredential NetworkCredential(user_name, (user_name, password); request.ContentLength request.ContentLength = text.Length; using ( using (Stream Stream request_stream request_stream = request.GetRequestStream( request.GetRequestStream()) )) { byte[] byte [] bytes = Encoding Encoding.UTF8.GetBytes(text); .UTF8.GetBytes(text); request_stream.Write(byte request_stream.Write(bytes, s, 0, text.Length); text.Length); request_stream.Close(); } }
FtpWebRequest digunakan untuk request kealamat ftb yang dituju. Sedang request.Credentials = new NetworkCredential(user_name, password); untuk login atau verifikasi penggunany
84
PERTEMUAN XXI WEB SERVICE DAN REMOTING
Web Service
Akhir-akhir ini hampir semua teknologi menerapkan aspek mobile. Jika 2-3 tahun belakangan, untuk mengupdate status Facebook, chatting, dsb dilakukan di desktop rumah maupun di warnet, tapi sekarang semuanya bisa dilakukan melalui handphone yang memiliki konektivitas minimal GPRS/EDGE. Web service adalah komponen software yang dipublikasi, diletakkan, dan dijalankan di internet menggunakan XML sebagai perantara/pengantar datanya. Aplikasi yang memakai web service, memanggil fungsi/method yang tersedia dengan format XML dan menerima respon dari server (yang menyediakan web service tersebut) berupa data dalam format XML juga.
Menciptakan layanan Web
Untuk membuat layanan Web, Anda akan memerlukan akses ke server IIS dengan .NET framework diinstal. Anda akan membutuhkan hak administratif pada server ini untuk mengembangkan layanan Web langsung dari Visual Studio .NET. Ketika Anda menginstal VS.NET, akan menginstal dan mengkonfigurasi IIS.untuk Andauntuk Anda service pertama Web ini digunakan untuk melaporkan variabel server dari server yang host service . Ini mungkin tidak tampak segera dapat digunakan , tapi salah satu variabel Server ( REMOTE_HOST ) menunjukkan alamat IP terpencil klien menghubungkan ke sana . Informasi ini berguna untuk menentukan apakah klien berjalan di belakang firewall atau proxy, karena dalam hal ini alamat IP lokal pada klien tidak akan sama dengan alamat IP yang akan terhubung ke server jauh . Tidak ada cara mudah untuk menentukan alamat IP ini hanya menggunakankode yang berjalan pada client . Penggunaan lain melacak alamat IP pemohon adalah untuk membatasi jumlah dari permintaan yang dilakukan terhadap la yanan dalam satu hari . Ini secara efektif melarang data mining , tetapi bisa menjadi penghalang ketika banyak pengguna menggunakan menggunakan layanan ini ini di belakang proxy keluar yang sama atau firewall . Memulai sebuah proyek baru dalam Visual Studio NET , memilih proyek jenis . ASP.NET Web Service . Path default untuk proyek baru ini adalah pada local Server IIS. Catatan: Jika Anda menerima pesan kesalahan tentang "debugging users group" pada IIS, ini biasanya berarti Anda belum belum mengaktifkan Integrated Windows Otentikasi bawah Directory Keamanan pada server. Sebuah server akan memiliki banyak variabel yang terkait dengan itu, meskipun nama-nama variabel-variabel ini tidak berubah dari server ke server, untuk untuk fleksibilitas, kita bisa memberikan metode yang mengembalikan sebuah array dari semua variabel server yang disimpan pada mesin ini.
Membuat Web Browser Sederhana dengan C#
85
Tahukah anda dengan software Mozilla firefox, google chrome, opera browser, internet explorer? Yah, aplikasi browser dibutuhkan untuk berselancar diinternet. Anda juga bisa membuat browser sendiri menggunakan C#. Dibawah ini langkahlangkahnya:
1. No 1 2 3 4 5 6 2.
Ubah text dan name pada objek properties disebelah kanan project anda. Object Form1 Button1 Button2 Button3 TextBox1 WebBrowser1
Name Form1 bt_back bt_next bt_go txt_url webBrowser1
Text Simple Web Browser < > GO!! (dikosongkan) -
Pada panel solution explorer disebelah kanan project anda klik kanan Form1>View Code.
86
3.
Tambahkan source code dibawah ini pada editor code project anda.
using System; using System; using System.Collections.Gener System.Collections.Generic; ic; using System.ComponentModel; System.ComponentModel; using System.Data; using System.Data; using System.Drawing; System.Drawing; using System.Text; using System.Text; using System.Windows.Forms; System.Windows.Forms; namespace net_3_0_browser_remo namespace net_3_0_browser_remote te //namespace di sesuiaikan sesuai nama file { public partial class Form1 Form1 : : Form { public Form1() public Form1() { InitializeComponent(); this.StartPosition this .StartPosition = FormStartPosition FormStartPosition.CenterScreen; .CenterScreen; this.Size this .Size = new Size Size(800,600); (800,600); webBrowser1.Dock = DockStyle DockStyle.None; .None; webBrowser1.Anchor = (AnchorStyles ( AnchorStyles .Top | AnchorStyles AnchorStyles.Left .Left | AnchorStyles.Right AnchorStyles .Right | AnchorStyles AnchorStyles.Bottom); .Bottom); progressBar1.Dock progressBar1.Dock = DockStyle DockStyle.Bottom; .Bottom; } private void void Form1_Load( Form1_Load(object object sender, sender, EventArgs EventArgs e) e) { } private void textBox1_KeyDown( textBox1_KeyDown(object object sender, sender, KeyEventArgs KeyEventArgs e) e) { if (e.KeyCode if (e.KeyCode == Keys Keys.Enter) .Enter) { txt_url.Text.ToLower(); if (!txt_url.Text.Contains( (!txt_url.Text.Contains("www" "www") ) || !txt_url.Text.Contains("com" !txt_url.Text.Contains( "com")) )) { webBrowser1.Navigate("https://www.google.com/#q=" webBrowser1.Navigate( "https://www.google.com/#q=" + + txt_url.Text); //penyetingan website yang yang di jadikan acuan pada search search engine” google.com”. google.com”.
} else { webBrowser1.Navigate(txt_url.Text); } } } private void webBrowser1_DocumentComp webBrowser1_DocumentCompleted( leted(object object sender, sender, WebBrowserDocumentCompletedEventArgs e) { txt_url.Text = webBrowser1.Url.ToString webBrowser1.Url.ToString(); (); } private void void bt_go_Click( bt_go_Click(object object sender, sender, EventArgs EventArgs e) e) { webBrowser1.Navigate("https://www.google.com/#q=" webBrowser1.Navigate( "https://www.google.com/#q=" + + txt_url.Text); txt_url.Text); penyetingan penyetingan website website yang di jadikan acuan acuan pada search search engine” // google.com”.
87
} private void void bt_back_Click( bt_back_Click(object object sender, sender, EventArgs EventArgs e) e) { webBrowser1.GoBack(); txt_url.Text = webBrowser1.Url.ToString webBrowser1.Url.ToString(); (); } private void bt_fwd_Click( bt_fwd_Click(object object sender, sender, EventArgs EventArgs e) e) { webBrowser1.GoForward(); txt_url.Text = webBrowser1.Url.ToString webBrowser1.Url.ToString(); (); } private void webBrowser1_ProgressChan webBrowser1_ProgressChanged( ged(object object sender, sender, WebBrowserProgressChangedEventArgs e) { progressBar1.Maximum = Convert Convert.ToInt32(e.MaximumProgress); .ToInt32(e.MaximumProgress); progressBar1.Value = Convert Convert.ToInt32(e.CurrentProgress); .ToInt32(e.CurrentProgress); } } }
88
PERTEMUAN XXII Web Service dan Remoting
Apa itu .NET Remoting ?
.NET Remoting adalah suatu mekanisme komunikasi antar objek yang berbeda proses, baik dikomputer yang sama, beda komputer dalam 1 jaringan atau antar jaringan.Remoting menyediakan kemampuan untuk menjalankan method pada sisi server, melewatkan parameter dan menerima nilai kembalian. Remote object berada disisi server, mesin lain jika ingin berinteraksi dengan remote object membutuhkan referensi dari remote object tersebut. .NET mempunyai dua solusi untuk pengembangan aplikasi klien server yaitu : 1. .NET Remoting/WCF 2. ASP .NET WebServices Teknologi remoting lainnya : DCE/RPC, CORBA, DCOM, MTS/COM+, Java RMI, Java EJB, Web Service/SOAP/XML-RPC Arsitektur
Remote Object Semua objek yang bisa diserialisasi dan dilewatkan melalui domain aplikasi yang berbeda disebut dengan remote object. Setiap objek bisa menjadi remote object dengan cara :
1. Turunan dari class MarshalByRefObject
89
2. Dengan menambahkan atribut [Serializable]
Tugas. 1. Buatlah Aplikasi Remoting,(Desktop/System/Jaringan) 2. Buatlah penjelasan dari Listing Tersebut 3. Jelaskan Proses Kerjanya?
90