본문 바로가기
Python

[Python] host(ip,url) port 로 연결 가능한지 확인 port 로 Ping 날려보기

by bryan.oh 2022. 9. 28.
반응형

Python

Socket 을 이용한 방법

 

hello-bryan.service.com:8080 으로 통신해야할 일이 있을 때, 우선 접속이 가능한지 체크해보는 방법입니다.

아래와 같은 메소드를 정의해 두고,

result = is_connectable('hello-bryan.service.com', '8080')
# result = True or False
def is_connectable(ip, port):
    import socket
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.settimeout(1)
    try:
        s.connect((ip, int(port)))
        s.shutdown(socket.SHUT_RDWR)
        return True
    except:
        return False
    finally:
        s.close()

성공하게되면 시간은 (네트워크 환경에 따라 약간의 차이가 있겠지만) 1ms~2ms 정도 걸립니다.

연결에 실패하게 되면 timeout 으로 설정한 시간만큼 지연됩니다.

위의 예제에서는 timeout 을 1로 했기 때문에, 연결이 안되는 url 로 요청을 했을 경우 1초 후 False 를 리턴합니다.

 

경우에 따라 사용하면 됩니다.

"A 링크가 안되면 B 링크를 사용해라" 라든가..

 

728x90
반응형

댓글