2012-11-01 2 views
1

새 연결이 만들어 질 때 한 번만 스트림을 들여다보고 연결이 SSL 연결인지 여부를 확인하려고합니다. 이렇게하려면 recv()에 MSG_PEEK 플래그를 사용합니다. 문제는 SSL 연결이 아니고 초기 들어오는 데이터가없는 연결에 대해 recv가 몇 초 동안 차단된다는 것입니다. 어떻게 수정해야합니까?MSG_PEEK 블록에서 recv()가 왜 발생합니까?

+0

비 차단 파일 기술자를 사용 하시겠습니까? –

+0

@KerrekSB이 코드를 작성하기 위해 전체 네트워크 처리 부분을 다시 작성하고 싶지는 않습니다. – chacham15

답변

5

호출을 차단하지 않으려면 MSG_DONTWAIT 플래그도 제공 할 수 있습니다 (POSIX는 아니지만 널리 구현 됨).하지만 초기 데이터가 ' SSL 연결이 아닌 아직 도착하지 않았습니까?

신뢰할 수있는 방법으로 데이터의 첫 번째 부분이 도착할 때까지 기다려야합니다.

관련 문제