• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Returning Distant IP Address from CFReadStream
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Returning Distant IP Address from CFReadStream


  • Subject: Returning Distant IP Address from CFReadStream
  • From: Vincent Lecours <email@hidden>
  • Date: Mon, 9 Mar 2009 10:14:17 -0400

Hi,

I have some troubles getting back the IP address back from the CFReadStream in my program. I connect using either a FQDN, an IPv4 or IPv6 to another server. Here is the code:

CFReadStreamRef readStream = NULL;
CFWriteStreamRef writeStream = NULL;
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (CFStringRef)distantHost, port, &readStream, &writeStream);

CFSocketNativeHandle native;
CFDataRef nativeProp = CFReadStreamCopyProperty(readStream, kCFStreamPropertySocketNativeHandle);
if(nativeProp == NULL)
{
NSLog(@"error");
}


CFDataGetBytes(nativeProp, CFRangeMake(0, CFDataGetLength(nativeProp)), (UInt8 *)&native);
CFRelease(nativeProp);
CFSocketRef distantSocket = CFSocketCreateWithNative(kCFAllocatorDefault, native, 0, NULL, NULL);
CFDataRef distaddr = CFSocketCopyPeerAddress(distantSocket);


struct sockaddr *pSockAddr = (struct sockaddr *) CFDataGetBytePtr(distaddr);
struct sockaddr_in *pSockAddrV4 = (struct sockaddr_in *) pSockAddr;
struct sockaddr_in6 *pSockAddrV6 = (struct sockaddr_in6 *)pSockAddr;


const void *pAddr = (pSockAddr->sa_family == AF_INET) ? (void *)(&(pSockAddrV4->sin_addr)) :(void *)(&(pSockAddrV6->sin6_addr));
char addrBuf[ MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) ];
const char *pStr = inet_ntop (pSockAddr->sa_family, pAddr, addrBuf, sizeof(addrBuf));

This code compiles fine, but crashes on the CFDataGetBytes call and I get the error message "Variable is not a CFData at this time" for variable nativeProp.

In the code, distantHost is an NSString containing either a FQDN, an IPv4 or IPv6 (for exemple: "www.google.com"). Further in the code, I am able to read from the readStream, so I don't think the readStream is the problem. Am I wrong? I am completely clueless! 

Thanks a Lot,
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Returning Distant IP Address from CFReadStream
      • From: Quinn <email@hidden>
  • Prev by Date: Re: How to broadcast to 255.255.255.255 on non-default interface
  • Next by Date: Re: Returning Distant IP Address from CFReadStream
  • Previous by thread: Re: How to broadcast to 255.255.255.255 on non-default interface
  • Next by thread: Re: Returning Distant IP Address from CFReadStream
  • Index(es):
    • Date
    • Thread