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