-1

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

4

1 に答える 1

1

実際には何も試していないようです。閉じるだけです。はrecvfrom()エラーで終了します。

于 2012-06-15T10:14:33.057 に答える