サーバーへの正常な接続を受信しており、コールバック関数を使用しています:
ホストの名前を取得してコンソールに出力しようとしています:
if(theType == kCFSocketConnectCallBack){
NSLog(@"Connection is accepted");
CFSocketNativeHandle nativeSocket = CFSocketGetNative(theSocket);
uint8_t name[SOCK_MAXADDRLEN];
socklen_t namelen = sizeof(name);
NSData *peer = nil;
if (getpeername(nativeSocket, (struct sockaddr *)name, &namelen) == 0) {
peer = [NSData dataWithBytes:name length:namelen];
NSString *string = [[NSString alloc] initWithData:peer encoding:NSUTF8StringEncoding];
NSLog(@"IP adress of connected peer: %@", string);
}
アプリケーションをデバッグ モードで実行すると、 name に割り当てられた IP アドレスの値が表示されるので、 name の取得に成功しました。各値は uint8_t です。ピアの長さは 16 を示しています。それを NSData に変換してから NSString に変換する際の問題...
出力: 2010-01-31 13:57:58.671 接続されたピアの IP アドレス: (null)
私の文字列は NULL として出力されています。
アドバイスをいただければ幸いです....