我正在使用C套接字为iPhone做应用程序。在某些时候,我在单独的recvfrom
(阻塞)上执行NSThread
,我不知道如何强制执行此操作以“解除阻止”并正常退出线程。调用shutdown()
或close()
不会改变任何内容,recvfrom
仍会挂起。有没有办法将它保持为阻塞套接字并强制它正确关闭并退出线程?
由于我被指责没有尝试任何操作,这是我的一段代码,不会导致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()
也不会取消阻止。
答案 0 :(得分:1)
听起来你还没有尝试过任何东西。关闭它。 recvfrom()
将退出并显示错误。