Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 套接字检查TCP/IP连接是否存在并缩短超时时间_Objective C_Sockets_Adhoc - Fatal编程技术网

Objective c 套接字检查TCP/IP连接是否存在并缩短超时时间

Objective c 套接字检查TCP/IP连接是否存在并缩短超时时间,objective-c,sockets,adhoc,Objective C,Sockets,Adhoc,我正在尝试将iOS应用程序连接到临时网络上的打印机,在将任何内容发送到打印机之前,我需要检查连接是否打开且有效,如何实现这一点?目前我正在做以下工作 CFReadStreamRef readStream; CFWriteStreamRef writeStream readStream = NULL; writeStream = NULL; CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)IPADDRESS, NUM_

我正在尝试将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];
}

但它总是进入,writeStream从不为null,因此我无法阻止它尝试将数据推送到套接字

~Edit-也许我最好重新表述一下我的问题,我如何才能阻止它挂起30多秒,直到它意识到没有连接

在将任何内容发送到打印机之前,我需要检查连接是否打开且有效,如何实现这一点


通过向打印机发送内容。检测TCP连接问题的唯一方法是对其进行一些I/O。

您使用什么协议与打印机通信?@trojanfoe抱歉,我不太清楚您的意思,我只是通过NSOutputStream将原始数据发送到打印机的Ip和端口。您没有使用IPP吗?我不明白打印机如何响应原始数据。对不起,我帮不了什么忙。我担心我所知道的是,我只是将一个包含字符串的输出流发送到一个端口,它正在打印出来(当然是在连接时)。好吧……也许我最好重新表述我的问题,我怎样才能阻止它挂起30多秒,直到它意识到没有连接?进一步研究后,我使用可达性先ping ip,然后再尝试发送数据,谢谢
   int bytesWritten;
   int bytesTotal = [data length];

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