无法写入CFWriteStreamWrite

时间:2011-12-09 06:22:15

标签: iphone ios sockets

我在向CFStream写入数据时遇到了麻烦。

// i am getting the CFSocketRef and then from it getting native Handle.
CFSocketNativeHandle sock = CFSocketGetNative( [appDelegate getSocketRef]);

上面代码是否返回了我创建的套接字的相同处理程序?我写入流上的内容是否会写在创建的套接字上?

// and then wrote 
CFStreamCreatePairWithSocket(kCFAllocatorDefault,  sock,
                                 &readStream, &writeStream);    
    if (!readStream || !writeStream) {
        // close([appDelegate TCPClient]);
        // close(sock);
        fprintf(stderr, "CFStreamCreatePairWithSocket() failed\n");
        return;
    }

以上工作正常,它不会给我失败的消息

// does not give error ,else portion is executed
if (!CFWriteStreamOpen(writeStream)) {
        CFStreamError myErr = CFWriteStreamGetError(writeStream);
        // An error has occurred.
        if (myErr.domain == kCFStreamErrorDomainPOSIX) {
            // Interpret myErr.error as a UNIX errno.
            NSLog(@"kCFStreamErrorDomainPOSIX");
        } else if (myErr.domain == kCFStreamErrorDomainMacOSStatus) {
            // Interpret myErr.error as a MacOS error code.
            OSStatus macError = (OSStatus)myErr.error;
            // Check other error domains.
            NSLog(@"kCFStreamErrorDomainMacOSStatus");
        }
    }else

    /* Send the connect call to stream */
  //  while (send_len < (originalLength + 1)) 
    {
      //  if (CFWriteStreamCanAcceptBytes(writeStream)) 
        {
            //UInt8 buf[] = "Hello, world";//(unsigned char *) "connectStream" 
            //CFIndex bufLen = (CFIndex)strlen(buf);
            bytes = CFWriteStreamWrite(writeStream,
                                       (unsigned char *) connectStream,
                                       originalLength );

            NSLog(@"%@",[[NSString alloc] initWithData:connectStream encoding:NSASCIIStringEncoding] );
            if (bytes < 0) {
                fprintf(stderr, "CFWriteStreamWrite() failed\n");
                // close(sock);
                return;
            }
            send_len += bytes;
        }
        // close(sock);
        CFReadStreamClose(readStream);
        CFWriteStreamClose(writeStream);
        return;
    }

CFWriteStreamCanAcceptBytes总是返回false,所以我已经对它进行了评论并直接写入了字节,并且它阻止了调用并且没有返回任何东西,也没有任何字节被写入流, 任何人都可以指导我这个rergard? 还有其他方法吗?

此致 阿米尔

0 个答案:

没有答案