서버와 통신하는 UDP 클라이언트가 있습니다.시간 초과 후 UDP 응답이 수신되었습니다.
서버는 각 요청마다 단일 응답을 제공합니다.
클라이언트가 요청을 보내고 5 초 동안 응답을 기다립니다.
서버의 응답을 5 초간 수신하지 못한 경우 - 클라이언트는 패킷이 네트워크에서 손실되었다고 가정합니다 (UDP ...). 로그에 보고서를 쓰고 다음 요청을 보냅니다.
그러나 때로는 네트워크에서 지연이 발생하고 서버 응답이 5 초 후에 발생합니다.
시나리오 설명 :
클라이언트가 "X"라는 패킷을 보냈습니다.
5 초의 시간 초과가 만료되었으며 클라이언트에서 "X"가 손실 된 패킷이라고보고합니다.
클라이언트가 "Y"라는 다른 패킷을 보냈습니다.
"X"에 대한 서버의 응답이 이제 클라이언트로 전송됩니다.
클라이언트는 응답이 요청과 호환되지 않는다고보고 로그에보고합니다.
클라이언트가 "Z"라는 다른 패킷을 보냈습니다.
이제 "Y"에 대한 서버의 응답이 클라이언트로 전달됩니다.
클라이언트는 응답이 요청과 호환되지 않는다고보고 로그에보고합니다.
그리고 이것은 무한 루프입니다!
우리는 무엇을 할 수 있습니까?
클라이언트가 가장 최근의 요청과 일치하지 않는 응답을 받으면 클라이언트가 실제 응답을 기다리지 않는다는 것을 말합니까? (전체 5 초를 기다리지 않습니다)? – nos
거의 처리가 6 초 이상 걸립니다 (식별 할 수 없음). –
그래, 내가 물었던 질문은 어떨까? 클라이언트가 예기치 않은 응답을받은 직후에 새로운 요청을 보냅니 까? – nos