code: def get_local_usable_addr(probe_addr):
      """Get local usable IP and port
  
      Returns
      -------
      str
          IP address, e.g., '192.168.8.12:50051'
      """
      sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
      try:
          # should get the address on the same subnet as probe_addr's
          sock.connect((probe_addr, 1))
          ip_addr = sock.getsockname()[0]
      except ValueError:
          ip_addr = "127.0.0.1"
      finally:
          sock.close()
      sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      sock.bind(("", 0))
      sock.listen(1)
      port = sock.getsockname()[1]
      sock.close()
  
      return ip_addr + ":" + str(port)
  
file_path: dgl/python/dgl/distributed/rpc_client.py
imports: import atexit
  import logging
  import os
  import socket
  import time
  from .None import rpc
  from .constants import MAX_QUEUE_SIZE
label_desc: Use image node_id 3 for calling a global function with example usage: get_local_usable_addr(probe_addr) and returns: unknown