0
如何獲取本地網絡中本地主機名(例如「myComputer」)的IP地址(例如192.168.0.1)?如何在Swift中獲取本地網絡中本地主機名的IP地址
我嘗試這樣做:
let host = CFHostCreateWithName(nil,"www.google.com").takeRetainedValue();
CFHostStartInfoResolution(host, .Addresses, nil);
var success: Boolean = 0;
let addresses = CFHostGetAddressing(host, &success).takeUnretainedValue() as NSArray;
if (addresses.count > 0){
let theAddress = addresses[0] as NSData;
var hostname = [CChar](count: Int(NI_MAXHOST), repeatedValue: 0)
if getnameinfo(UnsafePointer(theAddress.bytes), socklen_t(theAddress.length),
&hostname, socklen_t(hostname.count), nil, 0, NI_NUMERICHOST) == 0 {
if let numAddress = String.fromCString(hostname) {
println(numAddress)
}
}
}
這工作正常的地址,如「www.google.com」,而不是像「我的電腦」
主機名,我試了一下在Xcode模擬器。在那裏,它的工作原理,但不是在我的iPhone
我會得到錯誤:
fatal error: unexpectedly found nil while unwrapping an Optional value
...在4號線
感謝您的幫助!
所以你的意思是這樣呢? 讓地址:NSArray? addresses = CFHostGetAddressing(host,&success).takeUnretainedValue()as NSArray; 如果地址== {零回報 「」 } - 不工作,也 – Mario
看到我更新的答案的完整解決方案,你實際上看到的錯誤,你得到'CFHostGetAddressing'響應之前甚至發生。 –
這個工作正常!非常感謝你! – Mario