iOS中如何获取当前网络及其本地IP(Swift)
2017-10-13 13:41
806 查看
···
//获取当前网络
func getUsedSSID() ->
String { let interfaces =
CNCopySupportedInterfaces()
var ssid =
""
if interfaces !=
nil {
let interfacesArray =
CFBridgingRetain(interfaces) as!
Array<AnyObject>
if interfacesArray.count >
0 {
let interfaceName = interfacesArray[0]
as! CFString
let ussafeInterfaceData =
CNCopyCurrentNetworkInfo(interfaceName)
if (ussafeInterfaceData !=
nil) {
let interfaceData = ussafeInterfaceData
as! Dictionary<String,
Any>
ssid = interfaceData["SSID"]!
as! String
}
}
}
return ssid
}
//获取本机ip
func getLocalIPAddressForCurrentWiFi() ->
String? {
var address:
String?
// get list of all interfaces on the local machine
var ifaddr:
UnsafeMutablePointer<ifaddrs>? =
nil
guard
getifaddrs(&ifaddr) == 0 else {
return
nil
}
guard
let firstAddr = ifaddr else {
return
nil
}
for ifptr
in sequence(first: firstAddr, next: { $0.pointee.ifa_next }) {
let interface = ifptr.pointee
// Check for IPV4 or IPV6 interface
let addrFamily = interface.ifa_addr.pointee.sa_family
if addrFamily ==
UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
// Check interface name
let name =
String(cString: interface.ifa_name)
if name ==
"en0" {
// Convert interface address to a human readable string
var addr = interface.ifa_addr.pointee
var hostName = [CChar](repeating:
0, count: Int(NI_MAXHOST))
getnameinfo(&addr,
socklen_t(interface.ifa_addr.pointee.sa_len),
&hostName,
socklen_t(hostName.count), nil,
socklen_t(0), NI_NUMERICHOST)
address = String(cString: hostName)
}
}
}
freeifaddrs(ifaddr)
return address
}
···
//获取当前网络
func getUsedSSID() ->
String { let interfaces =
CNCopySupportedInterfaces()
var ssid =
""
if interfaces !=
nil {
let interfacesArray =
CFBridgingRetain(interfaces) as!
Array<AnyObject>
if interfacesArray.count >
0 {
let interfaceName = interfacesArray[0]
as! CFString
let ussafeInterfaceData =
CNCopyCurrentNetworkInfo(interfaceName)
if (ussafeInterfaceData !=
nil) {
let interfaceData = ussafeInterfaceData
as! Dictionary<String,
Any>
ssid = interfaceData["SSID"]!
as! String
}
}
}
return ssid
}
//获取本机ip
func getLocalIPAddressForCurrentWiFi() ->
String? {
var address:
String?
// get list of all interfaces on the local machine
var ifaddr:
UnsafeMutablePointer<ifaddrs>? =
nil
guard
getifaddrs(&ifaddr) == 0 else {
return
nil
}
guard
let firstAddr = ifaddr else {
return
nil
}
for ifptr
in sequence(first: firstAddr, next: { $0.pointee.ifa_next }) {
let interface = ifptr.pointee
// Check for IPV4 or IPV6 interface
let addrFamily = interface.ifa_addr.pointee.sa_family
if addrFamily ==
UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) {
// Check interface name
let name =
String(cString: interface.ifa_name)
if name ==
"en0" {
// Convert interface address to a human readable string
var addr = interface.ifa_addr.pointee
var hostName = [CChar](repeating:
0, count: Int(NI_MAXHOST))
getnameinfo(&addr,
socklen_t(interface.ifa_addr.pointee.sa_len),
&hostName,
socklen_t(hostName.count), nil,
socklen_t(0), NI_NUMERICHOST)
address = String(cString: hostName)
}
}
}
freeifaddrs(ifaddr)
return address
}
···
相关文章推荐
- ios开发之Swift获取视频截图(本地视频、网络视频的缩略图)
- 如何获取Android手机连接当前网络的外网IP
- iOS如何获取手机当前的网络状态
- ios开发之Swift获取视频截图(本地视频、网络视频的缩略图)(转)
- 如何获取Android手机连接网络的当前局域网IP
- Atitit 网络设备的自动发现机制 需求如下: 1、自动获取当前设备所在网段及当前与当前网段有连接的网段的所有IP,并判断出是哪类设备。如:服务器、交换机、防火墙等。 2、如何根据第1点得到的
- iOS如何获取手机当前的网络状态
- ios关于如何获取手机当前的ip
- IOS中如何获取手机的当前IP
- ios如何判断当前网络的运营商
- ios获取手机状态 idfa idfv 网络类型 分辨率 获取运营商 ip
- Android端如何获取手机当前的网络状态,比如wifi还是3G, 还是2G, 电信还是联通,还是移动
- 关于获取ios当前的网络状态
- iOS中利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G) by徐文棋
- 【ios开发】如何判断当前网络连接状态(网络是否正常)
- iOS中如何通过点击UITableViewCell中的Button来获取当前Cell的indexPath
- iOS如何判断当前网络的运营商
- iOS中如何利用AFNetworking检测当前的网络状态