如何在Swift iOS中获取路由器的IP地址
我想从我的iPhone中获取已连接路由器的IP地址。我只获取iPhone的IP地址 有什么方法可以获取主机/路由器IP地址吗 顺便说一句,我已经查看了以下链接,但没有解决方案:如何在Swift iOS中获取路由器的IP地址,ios,swift,networking,wifi,ip-address,Ios,Swift,Networking,Wifi,Ip Address,我想从我的iPhone中获取已连接路由器的IP地址。我只获取iPhone的IP地址 有什么方法可以获取主机/路由器IP地址吗 顺便说一句,我已经查看了以下链接,但没有解决方案: 我正试图在Swift 5中使用XCode 12.4实现这一点。您可以使用sysctl从路由表中获取默认网关的IP地址,但首先您应该定义所需的结构和常量,因为Darwin.net.route或未向iOS SDK公开: 让RTAX\u网关=1 设RTAX_MAX=8 公共结构rt_度量{ public var rmx_
我正试图在Swift 5中使用XCode 12.4实现这一点。您可以使用
sysctl
从路由表中获取默认网关的IP地址,但首先您应该定义所需的结构和常量,因为Darwin.net.route
或
未向iOS SDK公开:
让RTAX\u网关=1
设RTAX_MAX=8
公共结构rt_度量{
public var rmx_locks:UInt32/*内核不使用这些值*/
此路径的公共变量rmx_mtu:UInt32/*mtu*/
公共变量rmx_跳数:UInt32/*预期最大跳数*/
公共变量rmx_expire:Int32/*路由的生存期,例如重定向*/
公共var rmx_recvpipe:UInt32/*入站延迟带宽乘积*/
公共变量rmx_发送管道:UInt32/*出站延迟带宽乘积*/
公共变量rmx_ssthresh:UInt32/*出站网关缓冲区限制*/
公共风险rmx_rtt:UInt32/*预计往返时间*/
公共风险风险rmx_rttvar:UInt32/*估计rtt方差*/
public var rmx_pksent:UInt32/*使用此路由发送的数据包*/
公共变量rmx_状态:UInt32/*路由状态*/
公共变量rmx_filler:(UInt32、UInt32、UInt32)/*将用于TCP的对等MSS缓存*/
}
公共结构rt_msghdr2{
public var rtm_msglen:u_short/*跳过未理解的消息*/
公共变量rtm_版本:u_char/*未来二进制兼容性*/
公共变量rtm_类型:u_char/*消息类型*/
公共var rtm_索引:关联ifp的u_short/*索引*/
公共变量rtm_标志:Int32/*标志,包括内核和消息,如完成*/
public var rtm_addrs:Int32/*位掩码标识msg中的sockaddrs*/
公共变量rtm_refcnt:Int32/*引用计数*/
public var rtm_parentflags:父路由的Int32/*标志*/
公共变量rtm_保留:Int32/*保留字段设置为0*/
公共变量rtm_use:Int32/*来自rtentry*/
public var rtm_inits:UInt32/*我们正在初始化哪些度量*/
公共var rtm_rmx:rt_度量/*度量本身*/
}
public func getDefaultGateway()->字符串?{
变量名称:[Int32]=[
CTL_NET,
PF_路线,
0,
0,
净转储2,
0
]
让nameSize=u_int(name.count)
var bufferSize=0
sysctl(&name,nameSize,nil,&bufferSize,nil,0)
let buffer=unsafemeutablepointer.allocate(容量:bufferSize)
延迟{buffer.deallocate()}
初始化(重复:0,计数:bufferSize)
guard sysctl(&name,nameSize,buffer,&bufferSize,nil,0)==0 else{return nil}
//路线
var rt=缓冲区
let end=rt.advanced(by:bufferSize)
而rt 对于0中的i..您需要调用外部api get public和routerip@Anbu.Karthik,你能解释一下我应该调用哪个外部API吗?我需要单独创建它们吗?你应该检查一下,如果网关为0.0.0.0,我们可以在iOS中获取连接的接入点的IP地址吗?我们尝试了此代码,我们正在获取连接的Ac的网关IP地址接入点,在我的例子中是0.0.0.0。但是我们想要连接的接入点的IP地址,而不是它的网关IP。你能帮忙吗?我怎样才能获得dhcp服务器iOS Swift的IP地址?@Akshada Systemaix我的例子展示了你如何访问你的路由表并获得关于默认网关的信息。路由表中有这样的路由的主机、子网和默认值,您可以通过分析其标志从列表中获取所需的路由。FreeBSD网关和路由-