0

iOS アプリケーションをアドホック ネットワーク上のプリンタに接続しようとしています。プリンタに何かを送信する前に、接続が開いていて有効であることを確認する必要があります。これを実現するにはどうすればよいですか? 現在、次の CFReadStreamRef readStream; を実行しています。CFWriteStreamRef writeStream;

readStream = NULL;
writeStream = NULL;

CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)IPADDRESS, NUM_PORT,NULL ,&writeStream );

if(writeStream)
{
    //inputStream = (__bridge NSInputStream *)readStream;
    oStream = (__bridge NSOutputStream *)writeStream;

    //[iStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    [oStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
    //[iStream setDelegate:delegate];
    [oStream setDelegate:delegate];
    //[iStream open];
    [oStream open];
}

   int bytesWritten;
   int bytesTotal = [data length];

   bytesWritten = [oStream write:[data bytes] maxLength: bytesTotal];
   NSLog(@"Bytes Written To Printer : %d",bytesWritten);

しかし、それは常に入っており、 writeStream は決してnullではないため、データをソケットにプッシュしようとするのを止めることができません。

〜編集-質問を言い換えるのが最善かもしれません.接続がないことに気付くまで、30秒以上ハングしないようにするにはどうすればよいですか?

4

1 に答える 1

1

プリンタに何かを送信する前に、接続が開いていて有効であることを確認する必要があります。これを実現するにはどうすればよいですか?

プリンターに何かを送ることによって。TCPで接続の問題を検出する唯一の方法は、TCPで何らかのI/Oを実行することです。

于 2012-08-01T10:18:41.283 に答える