으로 응답하고 나는 현재 내가 수행 쉽게 libcurl에 사용하고 보안 메시지 전송에FIN은 서버에서 수신하지만 연결은 내가 libcurl에 사용하고 libcurl에
"연결이 죽은 것 같다"으로 직면하고있는 문제에 대한 몇 가지 정보가 필요 SSL 지원 (TLS)을 사용하여 서버에 연결하십시오.
그러나 높은 수준에 나는 인터넷의 주위에 충분한 정보를보고 있지 않다 직면하고있는 문제 (내가 바로 단어를 찾고 있지 않다 할 수있다)이 발생하는 것이다. 서버와 성공적으로 연결할 수 있으며 데이터를 보내고받을 수 있습니다. 작은 창 (15 초) 동안 세션을 유휴 상태로 유지하고 추가 트랜잭션/메시지를 트리거하면 libcurl의 콘솔 로그에 "연결이 죽은 것으로 보입니다"및 "다시 연결"되는 것으로 나타납니다. 쉬운 연주로 컬이 자연스럽게 시간을 초과하면 거기에 걸리고 타임 아웃됩니다.
기존 연결을 다시 사용하기 전에 "wireshark"를 실행하고 분석하여 서버에서 "FIN, ACK"및 "ACK"패킷을 받았습니다. 하지만 클라이언트에서 서버로의 ACK로 서버에 응답하기 위해 상당한 시간을 기다렸으므로 서버가 내 미래의 요청을 존중하지 않는다고 생각합니다.
FIN에 대해 서버에 즉시 응답 할 수있는 방법이 있습니까, 연결 중에받은 ACK입니까?
는 libcurl에서이 문제인가, 아니면 내가 u는 내 conection에
두 가지를 제안합니다. 서버는 단지 15 초간의 유휴 상태 후에 연결을 닫아서는 안되지만, libcurl은 이것을 마치 클로저로 인식해야한다. 또한 FIN 이전에 SSL close-notify가 있었어야하고 libcurl도이를 인식해야합니다. 아니면 응용 프로그램 코드에서 직접 스트림을 끝내는 것을 인식하지 못하고 있습니까? – EJP
나는 시도했다. 그러나 어떤 통지도 전혀 보지 않고있다. 다음 요청이 전송 될 때만 libcurl은 번들에서 연결을 재사용하기 전에 상태를 확인한 다음 서버가 FIN_WAIT에 갈 수있을만큼 지연 될 수있는 시간까지 닫으려고합니다. 레벨은 무한 "정지"입니다. 하지만 난 나쁜 솔루션을 설정할 때 시도하기 전에 마지막 소켓을 확인하는 것입니다 한 솔루션을 시도했다. 내가 easy_cleanup()을 호출 한 다음 easy_init()를 호출하는 것이 좋지 않을 때. 그러나 아직도 이런 식으로 확신하지 못합니다. 어떤 코멘트? –