MODUL 2 IP ADDRESS SOCKET

  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

  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 Dalam modul ini yang akan dipelajari yaitu:
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
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.

  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

  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
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?.

  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() 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
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" )

  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.

  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

  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

  Loopback/localhost ::1

  1

  2 Wireless Network fe80::100:7f:fffe%13 Connection Local Area Connection fe80::dd:65d2:5457:250f%11

  3 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

  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

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.

  

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 •
  • Imports System.Net

  Jika anda lihat Ipv6server merupakan nama form, anda bebas mengubah nama form. Import yang diperlukan dalam program ini yaitu:

  • 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() Dim sckListener As Socket

  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

  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.

  

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 Berikut contoh tampilan output.

  Modul ini sudah selesai, kita lanjutkan tentang socket.