我想我的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