2012-08-01 3 views
0

iOS 응용 프로그램을 애드혹 네트워크의 프린터에 연결하려고합니다. 연결이 열려 있고 프린터에 무엇인가 보내기 전에 유효한지 확인해야합니다. 어떻게 할 수 있습니까? 이? 현재 다음을 수행하고 있습니다. 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 결코 null입니다.

~ 편집 - 어쩌면 내가 내 질문에 대해 가장 잘 표현할 수 있습니다. 연결이 없다는 것을 알 때까지 어떻게 30 초 이상 걸릴 수 있습니까?

+0

프린터와 통신 할 때 사용하는 프로토콜은 무엇입니까? – trojanfoe

+0

@trojanfoe 죄송합니다. 무슨 뜻인지 잘 모르겠다. IP 주소와 포트에 NSOutputStream을 통해 프린터로 원시 데이터를 보내는 중이다. –

+0

IPP를 사용하고 있지 않습니까? 프린터가 원시 데이터에 어떻게 반응 할 수 있는지 이해하지 못합니다. – trojanfoe

답변

1

프린터에 무엇인가 보내기 전에 연결이 열려 있고 유효한지 확인해야합니다. 어떻게해야합니까?

프린터로 무엇인가 보냄. TCP에서 연결 문제를 감지하는 유일한 방법은 TCP를 사용하여 일부 I/O를 수행하는 것입니다.

+0

Ok ... 내 질문에 어긋난다. 연결이 없다는 것을 알게 될 때까지 30 초 이상 걸리지 않게하려면 어떻게해야합니까? –

+0

더 자세히 살펴본 후 Reachabillity를 사용하여 데이터를 보내려고하기 전에 먼저 IP를 핑합니다. 감사합니다. –