나는 서버 소켓을 열어 둔 우분투 7.04에서 동작하는 표준 소켓 API를 사용하는 C++ 프로그램을 가지고있다. 내 시스템은 라우터 뒤에 있습니다. 라우터가 네트워크에서 끊어진 후 내 프로그램이 전송을 시작하면 얼마나 오랫동안 소켓 오류가 발생하는지 파악하고 싶습니다.중급 네트워크 연결 끊김으로 인해 TCP 소켓이 죽는 데 필요한 최대 시간은 어떻게 결정합니까?
즉, 내 프로그램이 유휴 상태가 될 수 있습니다 (사용자를 기다리는 중입니다). 라우터가 인터넷에서 연결이 끊긴 다음 프로그램이 해당 소켓을 통해 통신을 시도합니다.
TCP는 불리한 네트워크 조건에서 소켓을 활성 상태로 유지하는 데 꽤 능숙하기 때문에 분명히 빨리 알 수는 없습니다. 이로 인해 TCP는 마침내 포기하기 전에 많은 시간, 많은 방법을 재 시도합니다.
QA 그룹 (및 고객)에게 줄 수있는 '최악의 경우'시간을 설정해야합니다. 그러면 내 코드가 적절한 오프라인 상태가되는지 테스트 할 수 있습니다.
(참고로 내 프로그램은 주유소 용 펌프 시스템의 일부이며 서버는 지불 거래를 승인하는 시스템입니다. 다양한 스테이션을 인터넷에서 차단할 수 있습니다. 이유 및 고객이 무엇을 기대하는지 알고 싶어하는 경우).
편집 : 명확하지 않았습니다. 이 일을 기다리는 인간은 없습니다. 이것은 시스템 오피스를 오프라인으로 표기하기위한 것입니다. 30 초 내에 인증 정보가 다시 나오지 않으면 트랜잭션이 끝나고 사람들은 다른 일을 수행하게됩니다.
편집 : 일반적인 경우에는 질문에 답할 수 없다는 결론에 도달했습니다. TCP 연결이 다운 스트림 실패로 인해 오류를 발생하는 데 걸리는 시간을 결정하는 데 관련된 요소의 수는 간단한 장비에 대한 정확한 장비 및 실패에 너무 의존합니다.
나는 내 질문을 편집했습니다.이 사람은 기다리지 않아도됩니다. 트랜잭션 시간이 빠르며 빠릅니다. –