From 4020213ff4ce135e8b940ba03741996259274b68 Mon Sep 17 00:00:00 2001 From: sangge <2251250136@qq.com> Date: Fri, 17 Nov 2023 09:24:20 +0800 Subject: [PATCH] feat: get local ip from socket --- src/client.py | 13 +++++++++++-- src/node.py | 12 +++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/client.py b/src/client.py index 85a5634..2f0e8c9 100644 --- a/src/client.py +++ b/src/client.py @@ -370,8 +370,17 @@ async def receive_request(i_m: IP_Message): def get_own_ip() -> str: - ip = os.environ.get("HOST_IP", "IP not set") - return ip + ip = os.environ.get("HOST_IP") + if not ip: # 如果环境变量中没有IP + try: + # 从网卡获取IP + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + s.connect(("8.8.8.8", 80)) # 通过连接Google DNS获取IP + ip = s.getsockname()[0] + s.close() + except: + raise ValueError("Unable to get IP") + return str(ip) # get node list from central server diff --git a/src/node.py b/src/node.py index 7d4e061..ce1ca21 100644 --- a/src/node.py +++ b/src/node.py @@ -42,7 +42,17 @@ def send_ip(): # 用环境变量获取本机ip def get_local_ip(): global ip - ip = os.environ.get("HOST_IP", "IP not set") + ip = os.environ.get("HOST_IP") + if not ip: # 如果环境变量中没有IP + try: + # 从网卡获取IP + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + s.connect(("8.8.8.8", 80)) # 通过连接Google DNS获取IP + ip = str(s.getsockname()[0]) + s.close() + except: + raise ValueError("Unable to get IP") + def init():