[networking] 인위적으로 연결 시간 초과 오류 생성

연결 시간 초과가 발생하면 소프트웨어에 버그가 발생했습니다. 이러한 오류는 매우 드물다 (보통 내부 네트워크에 의해 연결이 끊어 질 때). 이러한 종류의 효과를 인위적으로 생성하여 소프트웨어를 테스트하려면 어떻게해야합니까?

중요한 경우 응용 프로그램은 CAsyncSocket 클래스를 사용하여 C ++ / MFC로 작성됩니다.

편집하다:

존재하지 않는 호스트를 사용해 보았는데 소켓 오류가 발생합니다.

WSAEINVAL (10022) 유효하지 않은 인수

다음 시도는 다른 포트에 연결 하는 Alexander 의 제안 을 사용 하는 것입니다 (예 : 81 (내 서버에서)). 잘 작동했습니다. 연결이 끊어진 것과 정확히 동일합니다 (60 초 대기 후 오류). 감사합니다!



답변

기존 호스트에 연결하지만 단순히 TCP SYN 패킷을 삭제하는 방화벽에 의해 차단 된 포트에 연결하십시오. 예 : www.google.com:81


답변

라우팅 할 수없는 IP 주소 (예 : 10.255.255.1)에 연결하십시오.


답변

유닉스 머신에 있다면, netcat을 사용하여 포트 청취를 시작할 수 있습니다 :

nc -l 8099

그런 다음 http : // localhost : 8099 / some / sort / of / endpoint 와 같이 해당 포트에 일반적으로 수행하는 모든 작업을 호출하도록 서비스를 수정 하십시오.

그런 다음 서비스에서 연결을 열고 데이터를 쓰지만 응답을 얻지 못하므로 연결 거부 대신 읽기 시간 초과가 발생합니다.


답변

다음 URL은 항상 시간 초과를 제공하며 위의 @Alexander 및 @Emu의 답변을 결합합니다.

http://example.com:81

example.com:81example.com은 DNS 표준에 의해 예약되어 있기 때문에 Alexander의 답변에 대한 사용 이 개선되었으므로 google.com:81Google과 같이 항상 도달 할 수 없으며 Google과 같은 느낌이 든다면 변경 될 수 있습니다. 또한 example.com도달 할 수없는 것으로 정의되어 있기 때문에 Google 서버가 과도하게 사용되지 않습니다.

@ emu의 대답보다 개선 된 것이라고 말하고 싶습니다. 기억하기가 훨씬 쉽기 때문입니다.


답변

좋은 답변은 많지만 가장 깨끗한 해결책은 이 서비스 인 것 같습니다

http://httpstat.us/504?sleep=60000

제한 시간 (최대 230 초) 및 최종 리턴 코드를 구성 할 수 있습니다.


답변

Python REPL을 사용하여 데이터를받는 동안 (예 : 연결이 설정된 후) 시간 초과를 시뮬레이션 할 수 있습니다. 표준 파이썬 설치 만 있으면됩니다.

Python 2.7.4 (default, Apr  6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> s.bind(('localhost', 9000))
>>> s.listen(0)
>>> (clientsocket, address) = s.accept()

이제 들어오는 연결을 기다립니다. 테스트하려는 대상을에 연결하십시오 localhost:9000. 그렇게하면 파이썬은 연결을 수락하고 accept()반환합니다. 을 통해 데이터를 보내지 않으면 다음 clientsocket에 호출자의 소켓이 시간 초과됩니다 recv().


답변

  • 10.0.0.0
  • 10.255.255.255
  • 172.16.0.0
  • 172.31.255.255
  • 192.168.0.0
  • 192.168.255.255

이것들은 모두 라우팅 할 수 없습니다.