0

以下のように、ftp リクエストの入力ストリームを作成します。

ftpStream = CFReadStreamCreateWithFTPURL(NULL, (CFURLRef) url);

networkStream = (NSInputStream *) ftpStream;        

[self.networkStream read:<#(uint8_t *)#> maxLength:<#(NSUInteger)#>]

データを読み取るときに、サーバーに接続できない場合、プログラムは上の 3 行目でスタックします。定義できる数秒後に接続を停止できるメソッドはありますか? または、これに対処する他の方法はありますか?

4

1 に答える 1

0

同期を行わないでくださいread。代わりに、ストリーム オブジェクトにデリゲートを設定し、実行ループでスケジュールして、 を呼び出します-open。アプリのメイン スレッドを使用している場合は、この時点で制御をフレームワークに戻すだけで、実行ループが実行されます。バックグラウンド スレッドを使用している場合、またはコマンド ライン ツールを作成している場合は、スレッドの実行ループを自分で実行します。読み取るデータがある場合、デリゲートが呼び出されます。

接続のタイムアウトを確立するために、実行ループでタイマーをスケジュールできます。または、実行ループを自分で実行している場合は、実行する時間に制限を設けることができます。接続が確立される前に時間が経過した場合は、ストリームを閉じてください。

于 2012-05-12T13:30:50.103 に答える