2011-01-10 77 views
1

我需要知道iPhone/iPad模拟器的主机名称。我的猜测应该是可能的,但我还没有找到办法。我为什么需要它?这是因为[[UIDevice currentDevice] name]为同一网络上运行的任何模拟器返回相同的名称“iPhone Simulator”。而且我需要使用位于Mac上的名称为“我的Mac开发机器”的特定工具。在模拟器上运行的应用程序应该能够确定它在“我的Mac开发机器”的模拟器上运行,并且应该允许从网络进行连接。有任何想法吗?iPhone/iPad模拟器的主机名称

+0

对于那些谁感兴趣的解决了这个问题。我用IP地址解决了它。我没有获取模拟器主机的名称,而是获取设备的IP地址,并在网络中显示我的应用程序,如“/iPhone Simulator”。它允许区分网络中的几个iPhone模拟器并选择正确的连接。 – MikhailV 2011-01-13 17:06:11

回答

0

嗯...我正在处理一个模拟器/模拟器,是不是合乎逻辑的是,无论是被模拟的绝对不知道它是模拟的?

+0

是的,我同意你的意见。如果iPhone Simulator允许为模拟器配置一个唯一的名称,那将会很棒。它会解决问题。但不幸的是,情况并非如此。所以,这使得模拟器与设备不同。如果我知道主机名称,我可以为模拟器分配一种“唯一”名称。 – MikhailV 2011-01-10 19:15:24

1

我有同样的问题,并且能慎重使用uname()模拟器内获得主机的节点名称,像这样:

#if TARGET_IPHONE_SIMULATOR 
#include <sys/utsname.h> 
#endif 

...

#if TARGET_IPHONE_SIMULATOR 
- (NSString *)testProxyHeaderValue { 
    struct utsname name = {}; 
    uname(&name); 
    return [NSString stringWithFormat:@"iPhone Simulator @ %s", name.nodename]; 
} 
#else 
- (NSString *)testProxyHeaderValue { 
    return [[UIDevice currentDevice] name]; 
} 
#endif 

模拟器的节点名称与主机的节点名称相同,可通过命令行上的uname -n获取。

在斯威夫特2:

var name = utsname() 
uname(&name) 
return withUnsafePointer(&name.nodename) { 
    String.fromCString(UnsafePointer($0))! 
}