2012-06-15 53 views
-1

我正在使用C套接字爲iPhone做應用程序。在某些時候,我正在執行recvfrom單獨的NSThread(這是阻止),我不知道如何強制此操作「解鎖」並正常退出線程。撥打shutdown()close()不會改變任何內容,recvfrom仍然掛起。有沒有辦法將它保持爲阻塞套接字並強制它正確關閉並退出線程?如何關閉在rcv上阻塞的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()也不解鎖。

回答

1

聽起來像你還沒有嘗試過任何東西。關閉它。 recvfrom()將退出並顯示錯誤。

+0

好的。我是個白癡。謝謝你,先生。 – solgar

+0

因此,爲了給這個問題添加更多答案,我似乎刪除了錯誤檢查代碼,並且我的應用程序通過recvfrom的連續調用進入了無限循環,並在我的應用程序的不同位置導致了其他問題。 – solgar

+0

@solgar所以不要那樣做;-) – EJP