Chapter 1 — Python Network Programming Cookbook Second Edition (Translate Indonesia) | Mendapatkan alamat IP dari remote mechine
Chapter 1
Sockets, IPv4, and Simple Client/Server Programming
1. Tujuan :
Adapun materi dalam praktikum ini diantaranya :
- Mencetak hostname dan alamat IPv4 Komputer
- Mendapatkan alamat IP dari remote mechine
- Mengonversi alamat IPv4 ke dalam format lainya
- Menemukan nama layanan, diberi port dan protokol
- Mengubah integer ke dan dari host ke urutan byte jaringan
- Mengatur dan mendapatkan batas waktu soket default
- Menangani socket error dengan baik
- Memodifikasi ukuran buffer
- Mengubah soket ke mode pemblokiran / non-pemblokiran
- Menggunakan kembali alamat soket
- Mencetak waktu terkini dari time server internet
- Membuat Program SNTP Client
- Membuat aplikasi client/ server TCP sederhana
- Membuat aplikasi client / server UDP sederhana
2. Percobaan
Mendapatkan Alamat IP Dari Remote Machine
Terkadang, kita butuh men-translate hostname dan ip address dari remote mechine. Misalnya, untuk pencarian ip address dari nama domain. Berikut adalah cara sederhana untuk melakukan hal tersebut.
Cara Melakukannya :
Jika Anda telah mengetahui IP Address dari remote mechine, anda dapat menggunakan fungsi built-in library, gethostname(). Pada case ini, anda harus melewatkan remote host sebagai parameternya.
Pada kasus ini, kita butuh memanggil fungsi gethostbyname(). Perhatikan short code berikut :
Listing 1.2. Menampikan informasi IP Address dari remote mechine:
#!/usr/bin/env python
# This program is optimized for Python 2.7.12 and Python 3.5.2.
# It may run on any other version with/without modifications.
import socket
def get_remote_machine_info():
remote_host = ‘www.python.org'
try:
print (“IP address of %s: %s” %(remote_host, socket.gethostbyname(remote_host)))
except socket.error as err_msg:
print (“%s: %s” %(remote_host, err_msg))
if __name__ == ‘__main__’:
get_remote_machine_info()
Jika Anda jalankan code tersebut akan muncul tampilan berikut :
Bagaimana Cara Kerjanya :
Listing program diatas menggunakan method gethostbyname() didalam uuser-defined function yang dipanggil dalam fungsi get_remote_mechine_info(). Disini kita diperkenalkan dengan notion of exception handling. Seperti yang kalian lihat, kita membungkus fungsi main yang dipanggil didalam try-except block. Artinya, jika terjadi error saat mengeksekusi program dari fungsi ini, error tersebut akan diarahkan pada fungsi try-except block.
Contohnya, coba kita rubah nilai dari remote_host dan menggantinya dengan https://www.python.org/ dengan web yang memang tidak tersedia, contohnya, www.pytgo.org.
#!/usr/bin/env python
def get_remote_machine_info():
remote_host = ‘www.pytgo.org'
try:
print (“IP address of %s: %s” %
(remote_host,
socket.gethostbyname(remote_host))) except socket.error as err_msg:
print (“%s: %s” %(remote_host, err_msg))
if __name__ == ‘__main__’:
get_remote_machine_info()
Ketika di run, maka akan muncul tampilan seperti berikut :
$ python 1_2_remote_machine_info.py
www.pytgo.org: [Errno -2] Name or service not known
Function try-excerpt akan menampilkan pesan kesalahan atau error akibat no IP yang tidak terdaftar, www.pytgo.org