Objective-C - iPod touch の IP アドレスをプログラムで決定する
-
12-09-2019 - |
質問
私はいくつかの iPod デバイス用にObjective-Cでプログラミングしているのですが、何か疑問に思っていました。私はサーバークライアントモデルを利用するアプリケーションを開発しており、C ソケットで UDP プロトコルを使用しています。iPod デバイスの IP アドレスを決定できるクラスはありますか?他のフォーラムを調べてみましたが、何も見つかりませんでした。明らかにこのコマンドは機能しませんが、ipAddress = self.ip のようなものが私が念頭に置いていたものです。マルチキャストCソケットを設定していて、pingコマンドに似た回避策を実行しようとしていますが、これは明らかにObjective-Cにも存在せず、私の知る限り(私はプログラミングしかしていないので制限されています)少なくとも、この夏の初めから目標 C では使用されています)。アドバイスやヒントはありますか?
解決
このコードスニペットは、インターフェースを介してループすることによってそれを取得します。
- (NSString *)getIPAddress
{
NSString *address = @"error";
struct ifaddrs *interfaces = NULL;
struct ifaddrs *temp_addr = NULL;
int success = 0;
// retrieve the current interfaces - returns 0 on success
success = getifaddrs(&interfaces);
if (success == 0)
{
// Loop through linked list of interfaces
temp_addr = interfaces;
while(temp_addr != NULL)
{
if(temp_addr->ifa_addr->sa_family == AF_INET)
{
// Check if interface is en0 which is the wifi connection on the iPhone
if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"])
{
// Get NSString from C String
address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
}
}
temp_addr = temp_addr->ifa_next;
}
}
// Free memory
freeifaddrs(interfaces);
return address;
}
他のヒント
これを見ましたか? http://www.appsamuck.com/day4.html. 。使うのが正解だと思います CFHost
SDKで。
編集
そのプロジェクトのソースは次のコードを使用しているようです。 これは完全に無効な解決策になります Apple が決定しない限り、 NSHost
SDKに入れます。
-(NSString*)getAddress {
char iphone_ip[255];
strcpy(iphone_ip,"127.0.0.1"); // if everything fails
NSHost* myhost =[NSHost currentHost];
if (myhost)
{
NSString *ad = [myhost address];
if (ad)
strcpy(iphone_ip,[ad cStringUsingEncoding: NSISOLatin1StringEncoding]);
}
return [NSString stringWithFormat:@"%s",iphone_ip];
}
所属していません StackOverflow