Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tìm địa chỉ IP của máy khách (client) trong Python

Sử dụng module socket built-in để lấy hostname và IP address cục bộ (local IP) của máy đang chạy script.

Mã nguồn

import socket

hostname = socket.gethostname()
ip_address = socket.gethostbyname(hostname)

print(f"Hostname: {hostname}")
print(f"IP Address: {ip_address}")

Kết quả mẫu

Hostname: DESKTOP-A0PM5GD
IP Address: 192.168.43.15

Giải thích

  • socket.gethostname(): Trả về tên máy tính (hostname) theo OS.
  • socket.gethostbyname(hostname): Phân giải hostname thành IPv4 address.
  • Kết quả là IP nội bộ (private IP) trong LAN (192.168.x.x, 10.x.x.x, 172.16-31.x.x).

Lấy Public IP (IP ngoài internet)

Cần gọi API bên ngoài vì socket chỉ thấy interface local.

import requests

try:
    response = requests.get('https://api.ipify.org', timeout=5)
    public_ip = response.text.strip()
    print(f"Public IP: {public_ip}")
except Exception as e:
    print(f"Lỗi lấy public IP: {e}")

Lấy tất cả IP của máy (multi-interface)

import socket

hostname = socket.gethostname()
all_ips = socket.gethostbyname_ex(hostname)
print(f"Hostname: {hostname}")
print(f"Aliases: {all_ips[0]}")
print(f"IPs: {all_ips[2]}")

Kết luận

socket.gethostbyname(gethostname()) nhanh, không cần internet, cho IP local. Dùng requests + ipify/api.ipify.org cho public IP. Lưu ý: máy có thể có nhiều IP (VPN, Docker, VM, WiFi+Ethernet).