私はいくつかのiPodデバイス用にObjective-Cでプログラミングしていますが、何か疑問に思っていました。サーバークライアントモデルを利用するアプリケーションを開発しており、CソケットでUDPプロトコルを使用しています。iPodデバイスのIPアドレスを判別できるクラスはありますか?他のフォーラムを調べた後、何も見つかりませんでした。明らかにこのコマンドは機能しませんが、ipAddress=self.ipのようなものが私が念頭に置いていたものです。私はマルチキャストCソケットを設定していて、pingコマンドに似た回避策を実行しようとしています。これは、Objective-Cにも、私の知る限り(プログラミングしているだけなので、制限されています)には明らかに存在しません。少なくともこの夏の初めからObjective-Cで)。アドバイスやヒントはありますか?
5760 次
2 に答える
8
このコード スニペットは、インターフェイスをループして取得します。
- (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;
}
于 2009-07-10T19:16:52.523 に答える
0
これを見ましたか? http://www.appsamuck.com/day4.html。CFHost
SDKで使うのが正解だと思います。
EDIT
そのプロジェクトのソースは次のコードを使用しているようです。これは、 Apple がSDKに入れることを決定しない限り、完全に無効なソリューションになります。NSHost
-(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];
}
于 2009-07-10T19:12:57.537 に答える