문제

Java에서 웹 서버를 작성하고 있으며 HTTP 1.1 Keep-Alive 연결을 지원하기를 원합니다. 그러나 고객이 주어진 연결에 대한 요청을 보내는시기를 어떻게 알 수 있습니까? (이중 끝 또는 무언가처럼).

StackoverFlow가 어떻게이 매우 모호한 질문을 처리하는지 살펴 보겠습니다. Google에서 기술 사양과 모호한 언어에 빠지는 답변. 나는 비 C 프로그래머를위한 평범한 영어 답변을 원한다 :)


알겠어요. 그것은 SockettimeOutexception에 의존해야한다는 의심을 확인합니다. 그러나 클라이언트로부터 연결을 사용하여 수행 할 수있는 것이 있는지 확신하지 못했습니다. 이는 대부분의 경우 연결을 더 빨리 닫을 수있는 시간 초과를 기다리는 것입니다. 감사

도움이 되었습니까?

해결책

표준을 충족시키기 위해 서버를 구축하는 경우 이미 여기에서 안내 할 정보가 많이 있습니다.

간단한 말, 연결이 사용 된 이후 시간을 기준으로해야하며 요청 데이터 수준은 그리 많지 않습니다.

더 긴 틀에 따라 실제 고려 사항 섹션 HTTP/1.1 문서 중 몇 가지 지침이 있습니다.

"서버는 일반적으로 비활성 연결을 유지하지 못하는 시간이 넘는 시간 값을 가지게됩니다. 프록시 서버는 클라이언트가 동일한 서버를 통해 더 많은 연결을 만들 가능성이 있기 때문에 더 높은 값을 만들 수 있습니다. 연결은 클라이언트 또는 서버에 대한이 시간 초과의 길이 (또는 존재)에 대한 요구 사항을 제시하지 않습니다. "

또는

"클라이언트 나 서버가 시간을 내기를 원할 때는 전송 연결에 우아한 가까이 다가 가야합니다. 클라이언트와 서버는 전송의 다른 쪽을 지속적으로 지켜보고 적절하게 응답해야합니다. 클라이언트 또는 서버의 경우. 상대방이 신속하게 감지하지 않으면 네트워크에서 불필요한 리소스 배출을 유발할 수 있습니다. "

다른 팁

StackoverFlow가 어떻게이 매우 모호한 질문을 처리하는지 살펴 보겠습니다. Google에서 기술 사양과 모호한 언어에 빠지는 답변.

난 그냥 넣어 HTTP 1.1 연결은 언제 닫아야합니까? Google에서 세 번째 히트는 HTTP가 정말 쉽게 만들어졌습니다. 목차에는 제목의 섹션에 대한 링크가 있습니다. 영구 연결 및 "연결 : 닫기"헤더. 이 섹션은 길이가 3 개 단락이며 매우 간단한 언어를 사용하며 알고 싶은 것을 정확히 알려줍니다.

나는 비 C 프로그래머를위한 평범한 영어 답변을 원한다 :)

모든 존중으로 프로그래밍은 세부 사항이 중요한 기술적 노력입니다. 기술 문서를 읽는 것은 절대적으로 필수적인 기술입니다. 사양에 대한 "일반 영어"제 3 자 해석에 의존하면 일을 열심히 일할 수 있습니다.

원할 때마다 닫습니다. 헤더는 클라이언트가 연결을 열어 두는 것을 선호하지만 서버가 준수하지 않아도됩니다. 대부분의 서버는 약 5-10 초 동안 열어두고 일부 서버는 전혀주의를 기울이지 않습니다.

Keep-alive 기능을 다루는 RFC를 읽어야합니다. 그렇지 않으면 예상대로 작동하지 않는 서버로 끝날 수 있습니다.

@[Stephen]이 이미 지적했듯이 서버는 원하는 연결을 자유롭게 닫을 수 있습니다 (확인/응답 쌍의 중간에 있지 않음). 클라이언트를위한 ditto. 다른 솔루션을 사용하면 서버 나 클라이언트가 상대방에서 DOS를 수행 할 수 있습니다.

편집 : 연결 헤더를 살펴보십시오. 클라이언트 (및 서버)는 헤더를 사용하여 우아한 연결 클로저를 요청할 수 있습니다. 예를 들어, Connection: close 요청 내부에는 서버가 응답을 보낸 후 연결을 닫도록 요청합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top