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()ブロックを解除しません。