MODUL 2 IP ADDRESS SOCKET
ISI HALAMAN INI
Pendahulan ........................................................................................................................... 2 Mengetahui Domain ............................................................................................................. 2 IP End Point ........................................................................................................................... 4 Mendeteksi IP Address .......................................................................................................... 5 Mencek Apakah Komputer terhubung dengan Internet ....................................................... 7 URL Address .......................................................................................................................... 9 Ipv6 ..................................................................................................................................... 12 Instalasi ........................................................................................................................... 12 Pengujian IPV6 ................................................................................................................ 12 Aktifkan Ipv6 Framework ................................................................................................ 15 Pemrograman VB.NET ..................................................................................................... 16 Ipversi 6 Client ................................................................................................................ 19
Andrew fiade pemrograman jaringan –
[email protected]
halaman 1
PENDAHULAN
Dalam modul ini yang akan dipelajari yaitu:
•
•
•
• •
Memahami bagaimana cara mendapatkan IP Address di komputer yang sedang digunakan untuk ditampilkan diaplikasi. Bermanfaat ketika kita ingin membuat aplikasi server, dengan tahap awal mendeteksi IP yang digunakan sehingga kita tidak selalu menggunakan alamat localhost atau 127.0.0.1 untuk initial IP Address. Mendapatkan informasi versi IP yang digunakan (IP versi 4 atau IP Versi 6), alamat nama domain dengan mengetahui terlebih dahulu alamat IP, mengetahu port yang aktif dan informasi penting lainnya dalam penggunaan IP untuk aplikasi socket. Mengetahui alamat IP terlebih dahulu selanjutnya ingin diketahui alamat domain. Mengetahui alamat fisikal kartu jaringan. Ilustrasi domain yang umum kita ketahui yaitu facebook.com, fst.uinjkt.ac.id/andrew dan lainnya. Apakah komputer kita dapat terhubung dengan jaringan (internet) yang ditampilkan dalam aplikasi . Memahami dan menerapkan Ipv6 dengan tahapan cara instalasi Ipv6 dan mengaktikan dalam program aplikasi dengan protokol tcp server ipv6 dan tcp client ipv6 client.
MENGETAHUI DOMAIN
Percobaan aplikasi pertama yang dilakukan, yaitu kita mengetahui nama IP Address tapi kita tidak mengetahui nama domain. Bahasa pemrograman yang digunakan dari awal bab sampai akhir bab yaitu VB,NET, kita dapat gunakan VB.NET 2005, VB.NET 2008 dan VB.NET 2010 yang sudah diuji dan dapat diterapkan. Untuk form desain dapat anda lihat pada gambar, gambar tersebut menunjukan pula hasil dari program yang dijalankan. Properti yang digunakan yaitu: • • •
Textbox Button Listbox
Andrew fiade pemrograman jaringan –
[email protected]
halaman 2
Library yang digunakan untuk pengenalan IP Address dan pemrograman socket pada khususnya pada VB.Net yaitu: • • • •
Imports Imports Imports Imports
System System.Data System.Net System.Net.Sockets
Proses yang dilakukan ketikan user menginput sebuah alamat IP dan klik pada button, maka akan ditampilkan di list box. Kode program dapat dilihat pada kode program dapatkan domain.
Kode Program Dapatkan Domain Imports Imports Imports Imports
System System.Data System.Net System.Net.Sockets
Public Class Form2 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim CpIP As IPHostEntry Dim a As String CpIP = Dns.GetHostByAddress(TextBox1.Text) a = "IP :" + TextBox1.Text + " Nama hostnya adalah : " + CpIP.HostName
Andrew fiade pemrograman jaringan –
[email protected]
halaman 3
ListBox1.Items.Add(a) End Sub End Class
IP END POINT
Ip End Point dimaksudkan IP yang terhubung kesebuah alamat server, atau analogi lain IP dari client yang masuk ke IP Server. Karena kita belum masuk ke aplikasi server, maka IP yang digunakan menggunakan alamat localhost yaitu 127.0.0.1 dan port yang digunakan dapat bebas, dalam hal ini 12345. Untuk desain, sama seperti program diatas, tambahkan button dengan text =”Ip End Point”. Supaya nanti hasilnya tidak tercampur dengan program pertama,maka dalam program tersebut list box kita clearkan dengan menambahkan baris ListBox1.Items.Clear() Desain anda dapat lihat pada gambar. Dan tambahan program dapat anda lihat pada button2.
Andrew fiade pemrograman jaringan –
[email protected]
halaman 4
Kode program digabungkan dengan program diatas sebelumnya, karena masih dalam satu form. Kode Program Ip End Point Imports Imports Imports Imports
System System.Data System.Net System.Net.Sockets
Public Class Form2 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim CpIP As IPHostEntry Dim a As String CpIP = Dns.GetHostByAddress(TextBox1.Text) a = "IP :" + TextBox1.Text + " Nama hostnya adalah : " + CpIP.HostName ListBox1.Items.Add(a) End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim ipAddr As System.Net.IPAddress Dim ipEndPoint As System.Net.IPEndPoint Dim socketAddr As System.Net.SocketAddress ListBox1.Items.Clear() Try ipAddr = IPAddress.Parse("127.0.0.1") ipEndPoint = New System.Net.IPEndPoint(ipAddr, 12345) socketAddr = ipEndPoint.Serialize() ListBox1.Items.Add("Address Family: " & ipEndPoint.AdressFamily.ToString) ListBox1.Items.Add("IP:Port: " & ipEndPoint.Address.ToString & ":" & ipEndPoint.Port.ToString) ListBox1.Items.Add("SocketAddress : " & socketAddr.ToString()) Catch ex As Exception ListBox1.Items.Add(ex.StackTrace.ToString) End Try
End Sub End Class MENDETEKSI IP ADDRESS
Andrew fiade pemrograman jaringan –
[email protected]
halaman 5
Selanjutnya mendeteksi IP Address di komputer kita terkadang IP Address yang kita set selalu berubah hal ini akan menjadi masalah kalau kita mendefiniskan dalam program IP yang digunakan bersifat statis. Dalam program ini didefinisikan pula mengetahui nama ip dari nama sebuah domain, dalam hal ini user mengetikan nama domain di nama web jika anda lihat pada desain program. Ketika diklik maka program akan menampikan IP Address yang dimiliki oleh facebook sebagai contoh pada program. Anda dapat lihat hasilnya adalah 66.220.158.11 Silahkan anda buka firefox atau browser internet anda dengan 66.220.158.11, dan lihat halaman web apa yang akan tampil. Jika komputer anda memiliki alamat IP versi 6, maka alamat versi 6 anda akan tampil, jika anda ingin memiliki IP versi 6, dalam modul ini akan dijelaskan pula set IP versi 6. Tampilan pada desain dapat anda lihat pada gambar.
Properti yang digunakan dalam form tersebut yaitu: • • •
Label sebanyak 4 buah Textbox sebanyak 4 buah Button
Import yang digunakan agar VB net mengenali program yang kita ketikan yaitu: • •
Imports System.Net Imports System.Net.Sockets
Untuk pendeteksian IP Address dari domain Andrew fiade pemrograman jaringan –
[email protected]
halaman 6
Dim hostname2 As IPHostEntry = Dns.GetHostByName(TextBox1.Text) nama domain web.
menyimpan
Dan alamat domain, misalkan facebook ditampilkan di TextBox2.Text = ip2(0).ToString()
Ip Komputer sendiri ditampilkan di TextBox3.Text = ip(0).ToString() Untuk alamat mac address ditampilkan di TextBox4.Text = curAdd.ToString()
Kode lengkap nya dapat anda lihat di Kode program mendeteksi IP Address Kode Program Mendeteksi IP Address Imports System.Net Imports System.Net.Sockets Public Class Form2 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim hostname2 As IPHostEntry = Dns.GetHostByName(TextBox1.Text) Dim hostname As IPHostEntry = Dns.GetHostEntry(System.Environment.MachineName) Dim ip As IPAddress() = hostname.AddressList Dim ip2 As IPAddress() = hostname2.AddressList TextBox3.Text = ip(0).ToString() TextBox2.Text = ip2(0).ToString() Dim curAdd As IPAddress For Each curAdd In hostname.AddressList '=== Retrieve only IPv4 ==== If curAdd.AddressFamily = AddressFamily.InterNetwork Then TextBox4.Text = curAdd.ToString() End If Next curAdd End Sub End Class
MENCEK APAKAH KOMPUTER TERHUBUNG DENGAN INTERNET
Terkadang kita ingin memastikan komputer yang kita gunakan apakah dapat terhubung internet atau tidak, umumnya kita gunakan ping detik.com. dengan asumsi jika mendapatkan reply maka kita terhubung ke internet. Di sini kita dapat pula menguji apakah komputer kita dapat terhubung?.
Andrew fiade pemrograman jaringan –
[email protected]
halaman 7
Untuk aplikasi ini kita tidak menggunakan form baru, dari yang sebelumnya cukup menambahkan sebuah label, seperti pada gambar. Pada gambar dibawah, merupakan hasil pengujian program.
Dengan menambahkan program If InternetGetConnectedState(Out, 0) = True Then
maka kita tampilkan dengan kondisi benar atau salah jika benar koneksi terhubung jika tidak koneksi. Anda tidak perlu membuat ulang, silahkan dihat program dibawah ini Kode Program Deteksi Internet Imports System.Net Imports System.Net.Sockets Imports System.Runtime.InteropServices Public Class Form2 Private Declare Function InternetGetConnectedState Lib "wininet" (ByRef conn As Long, ByVal val As Long) As Boolean Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim hostname2 As IPHostEntry = Dns.GetHostByName(TextBox1.Text) Dim hostname As IPHostEntry = Dns.GetHostEntry(System.Environment.MachineName) Dim ip As IPAddress() = hostname.AddressList Dim ip2 As IPAddress() = hostname2.AddressList TextBox3.Text = ip(0).ToString()
Andrew fiade pemrograman jaringan –
[email protected]
halaman 8
TextBox2.Text = ip2(0).ToString() Dim curAdd As IPAddress For Each curAdd In hostname.AddressList '=== Retrieve only IPv4 ==== If curAdd.AddressFamily =
AddressFamily.InterNetwork
Then TextBox4.Text = curAdd.ToString() End If Next curAdd Dim Out As Integer If InternetGetConnectedState(Out, 0) = True Then Label5.Text = "Terkoneksi Internet" Else Label5.Text = "Tidak terhubung Internet" End If
End Sub End Class URL ADDRESS
Kali ini bukan IP Address, akan tetapi link url yang biasa kita ketikan di internet, kita ingin mengetahui informasi apa saya yang dapat kita gali url tersebut. Dalam hal ini yang dapat kita ekspose adalah: • • • •
Nama lokasi web Port yang digunakan Query jika menggunakan. Tipe IP yang digunakan
Properti yang digunakan yaitu: • • •
Textbox Button Listbox
Modul yang digunakan yaitu: • •
Imports System.Net Imports System.Net.Sockets
Desain dapat anda lihat pada gambar dan kode program dapat and lihat pula dihalaman selanjutnya
Andrew fiade pemrograman jaringan –
[email protected]
halaman 9
Silahkan dapat dilanjutkan dengan mengetikan program dibawah ini Kode Program URL Imports System.Net Imports System.Net.Sockets Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim aUri As New Uri(TextBox1.Text) ListBox1.Items.Clear() ListBox1.Items.Add("Absolute Url : " + aUri.AbsoluteUri) ListBox1.Items.Add("Host : " + aUri.Host) ListBox1.Items.Add("Scheme : " + aUri.Scheme) ListBox1.Items.Add("Port : " + aUri.Port.ToString) ListBox1.Items.Add("Absolute Path : " + aUri.AbsolutePath) ListBox1.Items.Add("Query : " + aUri.Query) ListBox1.Items.Add("User Infor : " + aUri.UserInfo) Dim a, b As String b = TextBox1.Text a = b.Replace("http://", "") Select Case aUri.CheckHostName(a) Case UriHostNameType.Basic ListBox1.Items.Add("Hostname: Basic") Case UriHostNameType.Dns ListBox1.Items.Add("Hostname: Dns") Case UriHostNameType.IPv4 ListBox1.Items.Add("Hostname : IPv4") Case UriHostNameType.IPv6 ListBox1.Items.Add("Hostname : IPv6")
Andrew fiade pemrograman jaringan –
[email protected]
halaman 10
Case UriHostNameType.Unknown ListBox1.Items.Add("Hostname : Unknown") End Select End Sub End Class
Untuk query: • • • •
http://www.java2s.com/index.htm?key=value http://fst.uinjkt.ac.id http://fst.uinjkt.ac.id/andrew http://gurahjakarta.blogdetik.com
silahkan coba yang lainnya.
Andrew fiade pemrograman jaringan –
[email protected]
halaman 11
IPV6
Pada modul ini akan diuji, membuat aplikasi TCP Server dengan Ipv6. Sebelum ke arah pemrograman VB. NET kita pastikan untuk instalasi IPV6 di komputer kita, dalam hal ini pengujian saya lakukan di sistem operasi windows 7. INSTALASI
PENGUJIAN IPV6
Setelah dilakukan instalasi kita uji komputer kita dengan mengecek IP Address yang telah di set secara otomatis. Kita dapat menguji di command prompt dengan mengetikan netsh, detail dapat dilihat di bawah.
Hasil Command Prompt Netsh C:\Users\andrew>netsh interface ipv6 show address Interface 1: Loopback Pseudo-Interface 1 Addr Type DAD State Valid Life Pref. Life Address --------- ----------- ---------- ---------- ------------------------
Andrew fiade pemrograman jaringan –
[email protected]
halaman 12
Other
Preferred
infinite infinite ::1
Interface 15: Wireless Network Connection Addr Type DAD State Valid Life Pref. Life Address --------- ----------- ---------- ---------- -----------------------Other Deprecated infinite infinite fe80::3816:7756:d33:a936%15 Interface 11: Local Area Connection Addr Type DAD State Valid Life Pref. Life Address --------- ----------- ---------- ---------- -----------------------Other Deprecated infinite infinite fe80::dd:65d2:5457:250f%11 Interface 13: Teredo Tunneling Pseudo-Interface Addr Type DAD State Valid Life Pref. Life Address --------- ----------- ---------- ---------- -----------------------Other Deprecated infinite infinite fe80::100:7f:fffe%13
C:\Users\andrew> Dari hasil diatas, terdapat 3 jaringan yang dapat dilihat pada tabel, hasil wireless dan local area connection, selalu berubah dan bersifat dinamis. Namun standard yang sama yaitu dimulai dengan fe80 No 1 2 3
Nama Interface Loopback/localhost Wireless Network Connection Local Area Connection
Ipv6 ::1 fe80::100:7f:fffe%13 fe80::dd:65d2:5457:250f%11
Untuk meyakinkan, kita dapat uji dengan mengetikan IP di diatas,anda dapat sesuaikan dengan hasil di komputer masing-masing.
Uji local host output Command Prompt C:\Users\andrew>ping ::1 Pinging ::1 with 32 bytes of data: Reply from ::1: time<1ms Reply from ::1: time<1ms Reply from ::1: time<1ms Reply from ::1: time<1ms Andrew fiade pemrograman jaringan –
[email protected]
halaman 13
Ping statistics for ::1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms C:\Users\andrew>
Uji lokal IP Wireless Output Command Prompt C:\Users\Andrew>ping fe80::100:7f:fffe%13 Pinging fe80::100:7f:fffe%13 with 32 bytes of data: Reply from fe80::100:7f:fffe%13: time<1ms Reply from fe80::100:7f:fffe%13: time<1ms Reply from fe80::100:7f:fffe%13: time<1ms Reply from fe80::100:7f:fffe%13: time<1ms Ping statistics for fe80::100:7f:fffe%13: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms C:\Users\Andrew>tracert fe80::100:7f:fffe%13 Untuk Ipv6 kita dapat lakukan tracert, sama dengan ipv4, pengguaan tracert. Contoh output: Output Command Prompt Tracert C:\Users\Andrew>tracert fe80::100:7f:fffe%13 Tracing route to fe80::100:7f:fffe%13 over a maximum of 30 hops 1 <1 ms <1 ms <1 ms fe80::100:7f:fffe Trace complete. C:\Users\Andrew>ping fe80:1:1
Andrew fiade pemrograman jaringan –
[email protected]
halaman 14
AKTIFKAN IPV6 FRAMEWORK Selanjutnya kita aktifkan Ipversi6. Secara default Framework versi 2 sudah mendukung Ipv6, dalam arti secara pemrograman sudah didukung menurut msdn versi windows. Namun adakalanya memang tidak diaktifkan. ☺ Cara untuk mengaktifkan kita masuk ke machine.config yang berada di lokasi C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG Karena secara default pula, file tersebut di proteksi sehingga kita tidak dapat edit, maka ubah properti file machine.config dengan cara: • • • • •
Klik kanan file tersebut Pilih security Pilih user (dalam hal ini user penulis adalah Lenovo) Pilih edit dan centang semua hak akses seperti pada gambar. OK, anda dapat edit file tersebut.
Andrew fiade pemrograman jaringan –
[email protected]
halaman 15
Anda tambahkan baris ini, kemudian kita simpan.dengan ini, VB.Net dapat mendukung Ipv6 Tambahan baris untuk machine.config <system.net> <settings>
PEMROGRAMAN VB.NET Selanjutnya, kita lakukan pemrograman VB.NET kita buat aplikasi Ipv6Server dan Ipv6Client. Dibawah ini desain dari Ipv6. Properti yang digunakan: • • •
Label Listbox Button
Andrew fiade pemrograman jaringan –
[email protected]
halaman 16
Jika anda lihat Ipv6server merupakan nama form, anda bebas mengubah nama form. Import yang diperlukan dalam program ini yaitu: • • • •
Imports Imports Imports Imports
System.Net System.Net.Sockets System.Threading System.Text
Logika program; • •
Port didefinisikan terlebih dahulu di Load (saat komputer dijalankan dengan nilai 9999 (anda bebas mengubah) Saat form load dijalankan, maka TCP Ipversi 6 diaktifkan pula sesuai dengan baris thdListener.Start()
• •
Fungsi listener tersebut merupakan sebuah fungsi Setiap ada pesan dari client. Dengan baris bytes = clientSocket.Receive(RecvBytes) a = Encoding.ASCII.GetString(RecvBytes) UpdateLblStatusThreadSafe(a)
•
Maka akan ditampilkan di text box. Untuk lebih ringkas, maka button ketika diklik akan memanggil form client, dalam hal ini penulis menamakan clientipv6 dan pemanggilan dengan clientipv6.Show().
Sintak ini akan benar jika anda sudah membuat form client untuk ipversi 6. Jika anda belum buat maka baris tersebut tidak dikenal
Imports Imports Imports Imports
Kode Program IPVersi 6 Server System.Net System.Net.Sockets System.Threading System.Text
Public Class IPv6server Public Shared port As Integer Private Delegate Sub updateLblStatus_dlgt(ByVal tempStr As String) Private Sub IPv6server_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load port = 9999 Dim thdListener As Thread = New Thread( _ New ThreadStart(AddressOf listener)) thdListener.Start() End Sub Public Sub listener() Dim sckListener As Socket
Andrew fiade pemrograman jaringan –
[email protected]
halaman 17
Dim a As String Dim clientSocket As Socket Dim ipepLocal As IPEndPoint = New IPEndPoint(IPAddress.IPv6Any, port) Dim RecvBytes() As Byte = New Byte(Byte.MaxValue) {} Dim bytes As Int32 If (Not Socket.SupportsIPv6) Then MessageBox.Show("Cannot support IPv6") Return End If While True sckListener = New Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp) sckListener.Bind(ipepLocal) sckListener.Listen(0) clientSocket = sckListener.Accept() bytes = clientSocket.Receive(RecvBytes) a = Encoding.ASCII.GetString(RecvBytes) UpdateLblStatusThreadSafe(a) clientSocket.Close() sckListener.Close() End While End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click clientipv6.Show() End Sub Private Sub UpdateLblStatusThreadSafe(ByVal tempStr As String) Dim updateLblStatus_obj As updateLblStatus_dlgt
If ListBox1.InvokeRequired Then updateLblStatus_obj = New updateLblStatus_dlgt(AddressOf UpdateLblStatusThreadSafe) If Not updateLblStatus_obj Is Nothing Then ListBox1.Invoke(updateLblStatus_obj, tempStr) End If Else Call UpdateLblStatus(tempStr) End If End Sub Private Sub UpdateLblStatus(ByVal tempStr As String)
ListBox1.Items.Add(tempStr) End Sub
End Class
Andrew fiade pemrograman jaringan –
[email protected]
halaman 18
IPVERSI 6 CLIENT Langsung saja, form desain dapat lihat pada gambar, dan properti yang diperlukan yaitu: • • •
Label : 2buah Text box : 2 buah button
dan import yang digunakan: • • •
Imports System.Net Imports System.Net.Sockets Imports System.Text
Proses algoritma ini: • • • • •
Form client ini akan show, ketika dari form server ip versi 6 mengklik button. Port sudah didefinisikan oleh program yaitu 9999, dengan form load, saat aplikasi dijalankan User input alamat versi 6 server yang dapat dilihat diawal. User input pesan User klik button. Untuk kirim.
Andrew fiade pemrograman jaringan –
[email protected]
halaman 19
Kode Program Ipversi 6 Client Imports System.Net Imports System.Net.Sockets Imports System.Text Public Class clientipv6 Public Shared port As Integer Private Sub clientipv6_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load port = 9999 End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim msg() As Byte Dim a As String If Not Socket.SupportsIPv6 Then MessageBox.Show("Cannot support IPv6") Return End If Dim ipAddrv6 As IPAddress = IPAddress.Parse(TextBox1.Text) Dim ipEPv6 As IPEndPoint = New IPEndPoint(ipAddrv6, port) Dim ipv6Socket As Socket ipv6Socket = New Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp) ipv6Socket.Connect(ipEPv6) a = "IP: " + TextBox1.Text + " pesan:" + TextBox2.Text msg = Encoding.ASCII.GetBytes(a) ipv6Socket.Send(msg) ipv6Socket.Close() End Sub End Class
Andrew fiade pemrograman jaringan –
[email protected]
halaman 20
Berikut contoh tampilan output.
Modul ini sudah selesai, kita lanjutkan tentang socket.
Andrew fiade pemrograman jaringan –
[email protected]
halaman 21