iPhoneアプリでNSHostの代替
-
26-09-2019 - |
質問
私は現在、このコードを使用しています。
NSHost *host = [NSHost hostWithAddress:hostname];
if (host == nil) {
host = [NSHost hostWithName:hostname];
if (host == nil) {
[self setMessage:@"Invalid IP address or hostname:"];
return;
}
}
私が働いているネットワーキングアプリのための私のIPアドレスをretriveする、しかし私はNSHostが拒否されますプライベートAPIであることを承知しています。 NSHostを使用せずに同じ結果を生成するには、このコードを作業して缶誰の助けを私に?私は本当にわから開始する場所ではないよ。
EDITます:
私は上記のコードの代わりに私のアプリにこのコードを追加しました下の気の近くのように見えるの提案を次の
Boolean result;
CFHostRef hostRef;
CFArrayRef addresses;
NSString *hostname = @"www.apple.com";
hostRef = CFHostCreateWithName(kCFAllocatorDefault, (CFStringRef)hostname);
if (hostRef) {
result = CFHostStartInfoResolution(hostRef, kCFHostAddresses, NULL); // pass an error instead of NULL here to find out why it failed
if (result == TRUE) {
addresses = CFHostGetAddressing(hostRef, &result);
}
}
if (result == TRUE) {
NSLog(@"Resolved");
} else {
NSLog(@"Not resolved");
}
私は、第四行を削除した(私は他の場所から既にこの情報を持っているように)が、私は宣言されていないことCFHostRefをベースにしているエラーが発生します。私はそれをどのように解決するのでしょうか?他のエラーは、それだけで後HOSTREFを見ることができるの欠如に基づいているように、私の唯一の大きなハードルであると思われます。 EDIT:スクラッチそのIもGET kCFHostAddresses宣言されていない
解決 3
http://developer.apple.com/iphone/library /qa/qa2009/qa1652.htmlする
ガット開発者サポートシステムを通じて偉大な小さな答え、これは完全に働いています。
他のヒント
あなたは同じことを達成するためにCFHostを使用することができます。 CFHost参照するの上に検索を行うための料理本のレシピです。
次のコードではない非常に、の非常に基本的な同期分解能の(NSHostとなる上記あなたのように)。なお、それが解決されるまで戻るか、タイムアウトヒットしないので、それはあなたのアプリケーションが応答しなくをレンダリングすることができるためのはあなたがこれを行うにはしたくない。
のを使用した非同期ルックアップの代わりにの(CFHostSetClientとCFHostScheduleWithRunLoop上記CFHostのドキュメントに記載されているように)。また、あなたがしている計画何をすべきかに応じて、あなたは到達可能性のAPIを使用してに見てみたいことがあります。 iPhoneの開発者向けウェブサイト上で利用できるネットワークの上のWWDCのセッションをチェックします。
Boolean result;
CFHostRef hostRef;
CFArrayRef addresses;
NSString *hostname = @"www.apple.com";
hostRef = CFHostCreateWithName(kCFAllocatorDefault, (CFStringRef)hostname);
if (hostRef) {
result = CFHostStartInfoResolution(hostRef, kCFHostAddresses, NULL); // pass an error instead of NULL here to find out why it failed
if (result == TRUE) {
addresses = CFHostGetAddressing(hostRef, &result);
}
}
if (result == TRUE) {
NSLog(@"Resolved");
} else {
NSLog(@"Not resolved");
}
// Don't forget to release hostRef when you're done with it