2010-04-14 2 views
0

소켓을 생성하고 연결을 수행 한 다음 소켓을 영원히 차단하여 API를 호출하는 제 3 자 API를 호출합니다.이 종료되었습니다.

소켓에 액세스 할 수 없습니다. 소켓에 액세스하지 않고 응용 프로그램에서 select 호출을 내보낼 수있는 방법이 있습니까?

내 플랫폼은 Windows입니다.

+0

몇 가지 질문/설명 : (1) 수정할 수있는 코드에서'select'를 호출합니까? 나는 * 대답은 "아니오"라고 생각하지만, 나는 확실히하고 싶다. (2) 이전 질문에 대한 답이 "아니오"라고 가정하면, 제 3 자 API는 지정한 여러 소켓에서'select'를 기다릴 수 있습니까? (3) 당신의 질문에서 두 개의 타사 api (하나는 소켓을 만들고 다른 하나는 소켓에 연결)와 하나 이상의 소켓에서 대기 할 다른 api 중 하나를 사용하는지 또는 하나의 api를 생성하는지 , 연결하고'select'를 호출합니다. –

+0

첫 번째 질문에 대한 대답은 아니오입니다. 제 3 자 API를 사용하여 연결을 만들고 연결을 선택하지 않고 제어권을 반환합니다. 질문에 관심을 가져 주셔서 감사합니다. – Jay

답변

1

사용하는 소켓이나 선택 세트에 액세스 할 수 없다면 일반적으로이 작업을 수행 할 수 없습니다.

소켓에 액세스 할 수있는 경우 closesocket()을 통해 닫습니다. 읽기 세트에 액세스 할 수 있다면 더미 소켓을 채우고 이전 지점을 확인하십시오.

는이 중 어느 것도 당신이 할 수있는 일을하지 않는 경우 다음 중 하나를

  • 는 확인이 선택 무시할 수
  • 시도 (이 어떤 상당히 명백한 자원 누수를 만듭니다 있지만) 나중에 죽일 수있는 별도의 스레드에서 발생 Detours (권장하지 않음)과 같은 것을 사용하십시오.
  • 패배를 인정하십시오.
+0

나는 Hasturkun과 동의한다. 또한 블로킹 소켓에 연결의 다른 쪽 인 것처럼 가장하여 메시지를 보낼 가능성을 추가합니다. –

+0

소켓에 액세스 할 수 없을 때 어떻게 메시지를 보낼 수 있습니까? 방법이 있습니까? 감사! – Jay

관련 문제