Memahami socket.gaierror
socket.gaierror adalah pengecualian (exception) dalam Python yang terjadi ketika fungsi getaddrinfo() gagal melakukan resolusi nama domain (DNS lookup). Singkatnya, sistem tidak dapat menerjemahkan alamat host (seperti 'google.com') menjadi alamat IP yang dapat dipahami oleh protokol jaringan. Kesalahan ini biasanya ditandai dengan pesan [Errno -2] Name or service not known atau [Errno -5] No address associated with hostname.
Penyebab Utama
Masalah ini umumnya dipicu oleh tiga faktor teknis utama:
- Koneksi Internet Terputus: Komputer tidak memiliki akses ke server DNS.
- Kesalahan Penulisan Hostname: Typo pada URL atau domain yang tidak terdaftar (non-existent).
- Konfigurasi DNS Lokal: File
/etc/resolv.conf(Linux/macOS) atau pengaturan DNS Windows yang salah.
| Pesan Error | Penyebab Teknis |
|---|---|
| [Errno -2] | Hostname tidak ditemukan di server DNS. |
| [Errno -5] | Hostname valid, namun tidak memiliki record IP (A/AAAA). |
| [Errno -3] | Temporary failure in name resolution (DNS timeout). |
Langkah Perbaikan Teknis
Untuk menangani error ini secara elegan dalam kode Python, gunakan blok try-except agar program tidak berhenti mendadak (crash). Berikut adalah implementasi standar industri:
import socket
def check_connection(host, port=80):
try:
socket.getaddrinfo(host, port)
return True
except socket.gaierror:
print(f"Error: Tidak dapat menemukan host {host}")
return False
except Exception as e:
print(f"Error tak terduga: {e}")
return False
# Penggunaan
if check_connection("www.google.com"):
print("Koneksi stabil.")
else:
print("Periksa DNS atau koneksi internet Anda.")Tips Troubleshooting Lapangan
- Uji dengan Ping: Jalankan perintah
ping google.comdi terminal/CMD. Jika gagal, masalah ada pada koneksi internet atau DNS lokal, bukan pada kode Python Anda. - Cek DNS Server: Jika Anda berada di jaringan korporat, pastikan firewall tidak memblokir akses DNS (port 53).
- Gunakan IP Statis: Jika domain sering gagal diresolusi, pertimbangkan menggunakan alamat IP langsung (jika IP tersebut bersifat statis).
- Timeout: Jika error terjadi karena koneksi lambat, tambahkan
socket.setdefaulttimeout(10)di awal skrip Anda.
🔍 Orang Lain Juga Mencari Ini
Python Socket Error Handling
Socket.gaierror Errno -2
Python Getaddrinfo Failed
Dns Resolution Error Python
Socket.gaierror Name Or Service Not Known
Python Network Programming Troubleshooting
Fix Socket.gaierror Python
Python Socket Connection Timeout
Dns Lookup Failure Python
Python Socket Library Tutorial
Socket.gaierror Errno -5
Python Check Internet Connection
Resolve Hostname Python
Python Socket Programming Best Practices
Troubleshooting Python Network Scripts