-1
C 소켓을 사용하여 iPhone 용 응용 프로그램을 만들고 있습니다. 어떤 시점에서 나는 NSThread
(블로킹)이라는 별도의 recvfrom
을 수행하고 있으며이 작업을 "차단 해제"하고 스레드에서 정상적으로 종료하는 방법을 모릅니다. shutdown()
또는 close()
을 호출해도 아무런 변화가 없으며 recvfrom
은 계속 응답하지 않습니다. 그것을 차단 소켓으로 유지하고 제대로 닫고 스레드에서 종료 할 수있는 방법이 있습니까?rcvfrom에서 차단 된 UDP 소켓을 닫는 방법
나는이 recvfrom
는 "차단 해제"를 발생하지 않는 코드의 내 작품이다 아무것도 시도하지 비난하고 있습니다으로 :
- (void) stopScan
{
NSLog(@"stopScan !!!");
[activityIndicator stopAnimating];
shutdown(broadcastSocket, SHUT_RDWR);
close(broadcastSocket);
[discoveryThread cancel];
[discoveryThread release];
discoveryThread = nil;
[scanTimer invalidate];
broadcastSocket = 0;
scanTimer = nil;
}
콜링 :이 내가 지금 무엇을 가지고
shutdown()
또는 close()
만 차단 해제되지 않습니다.
좋아요. 나는 바보. 감사합니다. – solgar
그래서이 질문/답변에 더 많은 것을 추가하려면 어떻게 든 오류 검사 코드를 제거한 것으로 보이고 내 응용 프로그램은 recvfrom의 연속 호출로 무한 루프에 들어가서 응용 프로그램의 다른 위치에서 다른 문제를 일으켰습니다. – solgar
@solgar 그렇게하지 마십시오 ;-) – EJP