我想我的iOS應用程序連接到打印機的ad-hoc網絡上,我需要檢查的連接發送任何內容到打印機之前開放和有效的,我如何能實現這個?目前我正在做以下操作: CFReadStreamRef readStream; CFWriteStreamRef writeStream;插座檢查TCP/IP連接存在,縮短超時
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是從來沒有空,因此我無法阻止它試圖將數據推到插座。
〜編輯 - 也許是我最好的改寫我的問題,我怎麼能阻止它掛了30秒以上,直到它意識到有沒有聯繫?
什麼協議是您使用交談的打印機嗎? – trojanfoe 2012-08-01 10:18:24
@trojanfoe對不起,我不太清楚你的意思,我只是通過NSOutputStream發送原始數據到打印機的IP和端口。 – 2012-08-01 10:26:14
您未使用IPP?我不明白打印機如何響應原始數據。 – trojanfoe 2012-08-01 10:27:05