2012-06-15 52 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