我使用Mongoose在iphone中启动并运行了一个Web服务器.但问题是如何让我的iphone/ipad的IP地址让用户知道他们可以访问服务器的位置.我发现[NSHost addresses]可以完成这项工作,但我正在开发app app,这是一种无证的方法.
我在iOS中有一项功能,如果IPv6中的用户设备网络,我需要禁用它.有没有办法我们可以通过编程方式将设备(iPhone/iPad)的IP地址作为字符串获取,然后检查它是IPv4还是IPv6网络(或者只是在不获取实际地址的情况下判断它是在IPv4还是IPv6网络上)?
我能找到的最近的是iPhone/iPad/OSX:如何以编程方式获取我的IP地址?(David H.),它再次要求我们事先指定网络,因此无法解决我的目的......通过他的解决方案,我总是得到一个IPv4或者总是得到一个IPv6.
对于IPv6测试,我使用Apple推荐的NAT64工具(https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html).
作为一种解决方法,我现在使用DNS来检查(https://hirooka.pro/?p=6169),我觉得这不是一个正确的方法,因为它应该是基于IP地址.另外,非常奇怪的是,iPad总是显示一个IPv4地址(即使连接到IPv6网络),但只是在DNS风格上有所不同......有人知道为什么会这样吗?
提前致谢.
对于我的项目,我需要获取IPhone的公共IP地址,有很多可用的示例,它们通过使用外部/第三方URL显示公共IP地址.我只想知道如何在没有使用其他网址的情况下提取IPhones的IP地址.
注意: - 我使用过这个,但只显示本地IP地址,我需要公共IP地址
func getIPAddress() -> [String] {
var addresses = [String]()
// Get list of all interfaces on the local machine:
var ifaddr : UnsafeMutablePointer<ifaddrs> = nil
if getifaddrs(&ifaddr) == 0 {
// For each interface ...
for (var ptr = ifaddr; ptr != nil; ptr = ptr.memory.ifa_next) {
let flags = Int32(ptr.memory.ifa_flags)
var addr = ptr.memory.ifa_addr.memory
// Check for running IPv4, IPv6 interfaces. Skip the loopback interface.
if (flags & (IFF_UP|IFF_RUNNING|IFF_LOOPBACK)) == (IFF_UP|IFF_RUNNING) {
if addr.sa_family == …Run Code Online (Sandbox Code Playgroud) 我知道如何通过en0接口获取IP地址,如下所示: iPhone/iPad/OSX:如何以编程方式获取我的IP地址?
但是现在我正在使用Lightning to USB 3相机适配器实现与LAN的以太网连接,以便在9.3中没有Wifi的情况下连接到互联网,因此上述解决方案无法在没有无线连接的情况下解析IP地址.iPad在互联网上很好,现在应用程序可以解析设备自己的IP地址非常重要.
如何通过Lightning-> USB->以太网连接获取iPad的IP地址?与无线相反.
提前致谢!
我正在使用Reachability类来检测wifi可用性.
在某些情况下,ipad将连接到一个wifi网络,用户将连接到另一个可用的wifi网络.
在这些网络转换期间,不会生成可达 - >无法访问 - >可达通知.
这个连接改变了ipad的ip地址改变的地方,我试图听.
是否存在本地wifi连接更改的通知,或者我是否必须定期轮询我的IP?
ios ×5
objective-c ×5
ip-address ×2
ipad ×2
iphone ×2
dns ×1
ios6 ×1
ipv6 ×1
localization ×1
public ×1
reachability ×1
swift ×1
swift2 ×1
swift2.1 ×1
xcode ×1