مثال 55 پایتون – برنامه ای به پایتون بنویسید که آدرس آی پی را با استفاده از stdlib پایتون پیدا کند.
کد برنامه
def get_ip():
local_ips = [ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][:1]
public_ip = [(s.connect(('8.8.8.8', 53)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1]
return local_ips[0] if local_ips else public_ip
print(get_ip())
توضیح کد
این کد به منظور دریافت IP دستگاه (در صورت وجود) ایجاد شده است. حالا بکارگیری متغیرها و نحوه کارکرد این کد را توضیح میدهیم:
- تابع
get_ipایجاد شده است تا IP دستگاه را برگرداند. - در این تابع، ابتدا متغیر
local_ipsتعریف شده است. این متغیر حاوی IPهای محلی (local IPs) است. برای این کار، ازsocket.gethostbyname_ex(socket.gethostname())[2]استفاده میشود. این دستور تمامی IP های مربوط به دستگاه را از طریق نام دستگاه (hostname) به دست میآورد. سپس با استفاده از (list comprehensions)، IPهایی که با “127.” شروع نمیشوند، استخراج میشوند. تنها اولین آیتم این لیست ([:1]) در متغیرlocal_ipsذخیره میشود. اگر هیچ IP محلی وجود نداشته باشد، این متغیر خالی باقی میماند. - سپس متغیر
public_ipایجاد میشود. برای این کار، از یک اتصال UDP به آدرس 8.8.8.8 و درگاه 53 (از دامنهنامه Google) استفاده میشود. با این اتصال، IP عمومی دستگاه برای این اتصال UDP بدست میآید. مقدار این IP در متغیرpublic_ipذخیره میشود. - در نهایت، با چک کردن
local_ips، اگر آن مقدار وجود داشته باشد، اولین IP محلی برگردانده میشود، در غیر این صورتpublic_ip(یعنی آخرین IP ایجاد شده) برگردانده میشود. - در نهایت، تابع
get_ipفراخوانی شده و IP دستگاه (در صورت وجود) چاپ میشود.
The post مثال 55 پایتون – برنامه ای به پایتون بنویسید که آدرس های آی پی را با استفاده از stdlib پایتون پیدا کند. appeared first on Tutorial24.ir.









