You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/AutomatedTesting/Gem/PythonTests/automatedtesting_shared/network_utils.py

62 lines
1.8 KiB
Python

"""
Copyright (c) Contributors to the Open 3D Engine Project
SPDX-License-Identifier: Apache-2.0 OR MIT
"""
import logging
import psutil
import socket
logger = logging.getLogger(__name__)
def check_for_listening_port(port):
"""
Checks to see if the connection to the designated port was established.
:param port: Port to listen to.
:return: True if port is listening.
"""
port_listening = False
for conn in psutil.net_connections():
if 'port={}'.format(port) in str(conn):
port_listening = True
return port_listening
def check_for_remote_listening_port(port, ip_addr='127.0.0.1'):
"""
Tries to connect to a port to see if port is listening.
:param port: Port being tested.
:param ip_addr: IP address of the host being connected to.
:return: True if connection to the port is established.
"""
port_listening = True
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
sock.connect((ip_addr, port))
except socket.error as err:
# Socket error: Connection refused, error code 10061
if err.errno == 10061:
port_listening = False
finally:
sock.close()
return port_listening
def get_local_ip_address():
"""
Finds the IP address for the primary ethernet adapter by opening a connection and grabbing its IP address.
:return: The IP address for the adapter used to make the connection.
"""
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
# Connecting to Google's public DNS so there is an open connection
# and then getting the address used for that connection
sock.connect(('8.8.8.8', 80))
host_ip = sock.getsockname()[0]
finally:
sock.close()
return host_ip