草庐IT

c++ - iOS NAT64 IPv6 环境问题

coder 2024-01-23 原文

现在苹果已经将他们的审查环境更改为仅 IPv6 网络,我在测试时遇到了我的应用程序的问题。

该应用程序要求用户输入他们的服务器/系统 IP 地址、端口 (4401) 和凭据才能访问该应用程序。按照苹果提供的指南,我设置了一个 NAT64 环境来测试我的应用程序的兼容性。在 iphone 5s 上运行 iOS 9.3.2。

我的工作环境有几个内部网络。我通过以太网将我的 iMac 连接到内部服务器 (10.10.50.XX),它也有一个外部 IP,这是我提供给苹果的。 50网没有代理,但是有一些站点被过滤了,但是确认后可以访问。然后我通过 WiFI 共享我的以太网连接。

我连接了设备并访问了互联网,同时过滤了相同的页面。设备被分配了一个本地链接地址 169.254.XX.XX。根据我的阅读,我的设备正确连接到仅 ipv6 网络,因为 iphone 不显示仅 ipv6 地址本地链接。

如果我正确连接到共享 IPv6 网络,我遇到的问题是从我的应用程序连接到 50 网络上的服务器。当我尝试连接到 10.10.50.XX 网络或外部网络时,应用程序失败(可以理解,因为我的 imac 在 50 内部网络上)。

使用连接到 50 网络的无线路由器使用 IPv4 测试应用程序运行完美。我认为这是本地链接地址无法看到 50 网络或其他东西的问题。

下面是关于我如何连接到服务器的一些简要背景信息。用户输入所有凭据以及他们要连接的服务器的 IP 地址和端口。应用程序将其保存为文本 (utf-8) 并使用 boost shared_ptr 将其发送到 cpp 连接类,该类验证凭据并为用户提供访问权限。这个 cpp 连接类处理来自服务器的连接、同步、日志记录、请求和响应。

是否可以使用 NAT64 互联网共享选项以某种方式访问​​ 50 网络?

最佳答案

如果您将 IP 地址直接传递给您的网络库,则不会。当您的设备位于 NAT64 的纯 IPv6 端时,服务器的 IPv4 地址是无用的。

您几乎肯定需要为您尝试访问的服务器提供一个 DNS 名称。当服务器仅支持 IPv4 时,NAT64 首先依赖 DNS64 为您的应用程序创建 IPv6 地址。这些合成地址包含服务器的 IPv4 地址,为 NAT64 提供从 IPv6 转换为 IPv4 所需的信息。

更新此内容以添加:正如 user102008 在附加到此答案的评论线程中所建议的,您也可以通过 getaddrinfo() 传递 IPv4 字符串文字(请参阅 code listing 10-1 on this page )。当您在 NAT64 后面时,合成的 IPv6 地址应该在该调用返回的结果中。 NAT64 将从该地址转换回 IPv4 以到达您指定的主机。在这种情况下,如果系统知道用于 NAT64 的正确前缀,则不需要主机名。

关于c++ - iOS NAT64 IPv6 环境问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38275827/

有关c++ - iOS NAT64 IPv6 环境问题的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  3. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  4. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  5. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  6. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  7. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  8. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  9. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

  10. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

随机推荐