def source_interface(address, port=80, ip_version=None):
"""Figure out what local interface is being used to
reach an address.
Returns a tuple of (address, interface_name)
"""
sock = socket.socket(
socket.AF_INET6 if ip_version == 6 else socket.AF_INET,
socket.SOCK_DGRAM)
try:
sock.connect((address, port))
except socket.error:
return (None, None)
interface_address = sock.getsockname()[0]
sock.close()
interface_name = address_interface(interface_address, ip_version=ip_version)
if interface_name:
return (interface_address, interface_name)
return (None, None)
评论列表
文章目录