Andrew fiade pemrograman jaringan – andrew_fiade@uinjkt.ac.id halaman 1
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
Andrew fiade pemrograman jaringan – andrew_fiade@uinjkt.ac.id halaman 2 PENDAHULAN
• 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 – andrew_fiade@uinjkt.ac.id halaman 3 Library yang digunakan untuk pengenalan IP Address dan pemrograman socket pada khususnya pada VB.Net yaitu:
• Imports System
• Imports System.Data • Imports System.Net
• Imports 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 System
Imports System.Data 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 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 – andrew_fiade@uinjkt.ac.id halaman 4 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 – andrew_fiade@uinjkt.ac.id halaman 5 Kode program digabungkan dengan program diatas sebelumnya, karena masih dalam satu form.
Kode Program Ip End Point Imports System
Imports System.Data 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 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 – andrew_fiade@uinjkt.ac.id halaman 6 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 – andrew_fiade@uinjkt.ac.id halaman 7 Dim hostname2 As IPHostEntry = Dns.GetHostByName(TextBox1.Text) menyimpan nama domain web.
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 – andrew_fiade@uinjkt.ac.id halaman 8 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 – andrew_fiade@uinjkt.ac.id halaman 9 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 – andrew_fiade@uinjkt.ac.id halaman 10 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
Andrew fiade pemrograman jaringan – andrew_fiade@uinjkt.ac.id halaman 11 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 – andrew_fiade@uinjkt.ac.id halaman 12 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 – andrew_fiade@uinjkt.ac.id halaman 13 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 Nama Interface Ipv6
1 Loopback/localhost ::1 2 Wireless Network
Connection
fe80::100:7f:fffe%13
3 Local Area Connection 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 – andrew_fiade@uinjkt.ac.id halaman 14 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.
Andrew fiade pemrograman jaringan – andrew_fiade@uinjkt.ac.id halaman 15 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.
Andrew fiade pemrograman jaringan – andrew_fiade@uinjkt.ac.id halaman 16 Anda tambahkan baris ini, kemudian kita simpan.dengan ini, VB.Net dapat mendukung Ipv6
Tambahan baris untuk machine.config <system.net> <settings> <ipv6 enabled="true" /> </settings> </system.net> 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 – andrew_fiade@uinjkt.ac.id halaman 17 Jika anda lihat Ipv6server merupakan nama form, anda bebas mengubah nama form. Import yang diperlukan dalam program ini yaitu:
• Imports System.Net
• Imports System.Net.Sockets • Imports System.Threading • Imports 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
Kode Program IPVersi 6 Server Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports 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()
Andrew fiade pemrograman jaringan – andrew_fiade@uinjkt.ac.id halaman 18 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 – andrew_fiade@uinjkt.ac.id halaman 19 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
Andrew fiade pemrograman jaringan – andrew_fiade@uinjkt.ac.id halaman 20
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
Andrew fiade pemrograman jaringan – andrew_fiade@uinjkt.ac.id halaman 21 Berikut contoh tampilan output.