WindowsデスクトップアプリケーションからiPhoneアプリに転送するクライアントサーバーを実装しました。ポーリングモード(同期)でNSStreamを使用してデータを転送します。
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)urlStr, portNo, &readStream, &writeStream);
inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;
[inputStream open];
[outputStream open];
すべて正常に動作しますが、存在しないサーバーまたは切断されたサーバーに接続しようとしたり、ポート番号/ IPアドレスが間違っていると、NSOutputStreamオブジェクトのWRITEメソッドがアプリケーションの実行を停止します。
const uint8_t *str = (uint8_t *) [strRichiesta cStringUsingEncoding:NSASCIIStringEncoding];
[outputStream write:str maxLength:strlen((char*)str)];
タイムアウト制御を挿入してメソッドを管理することはできますか?はいの場合、どうすればよいですか?
NSInputStreamオブジェクトのREADメソッドでも同じ問題が発生すると思います。
誰か助けてくれませんか?