文档章节

iOS解决找不到主机服务器的问题

HOrange
 HOrange
发布于 2017/08/21 18:14
字数 703
阅读 82
收藏 0

        找不到主机服务器的这个问题,一直是AFN的一大缺点,首先来说说找不到主机服务器的原因把

        我们在进行网络请求的时候,根据TCP/IP协议首先要封装好数据,数据是一层层封装的,当封装到第三层(也就是网络的时候)在数据包里面要封装目的IP地址,而不是封装目的域名,所以首先我们要进行DNS解析,通过查找DNS,返回IP地址进而进行继续封装,现在找不到主机服务器,大部分原因就是出现这块,通过DNS查找要么是返回错误的IP地址,要么是没返回任何结果,此时就是提示找不到主机服务器。国内的DNS服务器都有这样的通病,找不到DNS服务器是一种很正常的现象。

        一。从网络层面进行解决

        1.和公司的网络管理人员进行沟通,排查出口的时候是否设置了DNS;

        2.检查公司的防火墙或者路由器看是否做了什么策略,或者拦截,或者把DNS的端口封掉了

        3.打开数据流量测试网络的DNS服务器功能,分析对比出结果来。

        二、从iOS技术开发角度去解决问题

        首先阿里云出了一个方案就是HTTPDNS,原理大概是提前缓存好你的域名解析出对象的IP地址,当时我们也看了一下,里面调接口是用的原生的方法,一般我们都是用的AFN发起网络请求,如果是加上这个的话,感觉工作量有点大,每个接口都要改,而且改了之后还会或多或少的接口处问题,所以果断放弃了这种方案

        第二种方法

        我们不直接用ip地址去请求接口的主要原因就是:上传APP store 的是审核会不通过,因为苹果审核好像都是在IPV6网络下进行的,封装的时候会安装IPV6的格式封装,我们接口用专用IPV4接口的话直接回导致封装失败,提示“似乎断开了互联网的链接”,目前在我国IPV4还是主流,所以我想到一个方案就是我们在根域名那里做个判断,如果是IPV4网络的话,我们就设置ROOT_URL(根域名)为IPV4的api,即像

#define ROOT_URL  @"http://202.103.24.68/......",这种形式的,在IPV6的情况下封装成域名就可以了,这样两种网络下,都可以访问。判断网络是IPV4还是IPV6的可以自己百度一下。

© 著作权归作者所有

HOrange
粉丝 0
博文 31
码字总数 9618
作品 0
深圳
程序员
私信 提问
iOS简单音乐实现、React-Native完整项目、仿闲鱼京东列表分页、语音识别、网络加载过度动画等源码

iOS精选源码 iOS快速入手语音识别、听写、评测、播报 网络加载数据的过渡动画(仿简书网页) iOS 封装跑马灯和轮播效果 crash防护组件,适用常见常用的数组,字典等crash保护 iOS:高仿闲鱼、...

Code4app
2018/09/26
0
0
驰骋工作流引擎-CCMobile与安卓、IOS集成过程中的问题与解决方案

CCMobile与安卓、IOS集成过程中的问题与解决方案 前言: CCMobile(2019版本)是CCFlow&JFlow 的一款移动端审批的产品。系统基于mui框架开发,是一款可以兼容Android与IOS的移动端工作流审批...

孟娟
06/26
75
0
ios向服务器上传照片失败的问题,求指点

android和ios客户端调用同一个服务器(java)接口上传照片,android成功,ios失败,原因在于android 上传时服务器端Servlet的this.getRequest获得的request对象是multiPartRequestWrapper,i...

wjdroid
2017/11/30
275
2
理解 iOS 和 macOS 的内存管理

在 iOS 和 macOS 应用的开发中,无论是使用 Objective-C 还是使用 swift 都是通过引用计数策略来进行内存管理的,但是在日常开发中80%(这里,我瞎说的,8020 原则嘛)以上的情况,我们不需要...

Mr_zebra
2018/11/20
4
0
JPush APNs iOS通知推送支持 badge +1

JPush APNs Notification badge 支持 +1 的功能上线了,这对 iOS 推送通知非常有意义。 大量的 iOS 应用使用 JPush iOS 来推送通知,并且经常有群发的动作,即广播或者Tag推送。 在不支持 ba...

极光推送
2015/01/29
6.5K
2

没有更多内容

加载失败,请刷新页面

加载更多

移动开发中的 Web:WebView、WebKit、JSCore、Web 优化、热修复、跨平台、Native、Hybrid……

移动开发领域近年来已经逐渐告别了野蛮生长的时期,进入了相对成熟的时代。而一直以来 Native 和 Web 的争论从未停止,通过开发者孜孜不倦的努力,Web 的效率和 Native 的体验也一直在寻求着...

编辑部的故事
10分钟前
6
0
MySQL8.0.17 - Multi-Valued Indexes 简述

本文主要简单介绍下8.0.17新引入的功能multi-valued index, 顾名思义,索引上对于同一个Primary key, 可以建立多个二级索引项,实际上已经对array类型的基础功能做了支持 (感觉官方未来一定...

阿里云官方博客
56分钟前
5
0
make4.1降级 make-3.81、2错误

在编译 make-3.82 的时候出现如下错误提示 glob/glob.c:xxx: undefined reference to `__alloca'` 修改 /glob/glob.c // #if !defined __alloca && !defined __GNU_LIBRARY__ # ifdef __GNUC......

Domineering
57分钟前
13
0
Rainbond集群的安装和运维的原理

本文将解读Rainbond集群的安装和运维的原理,使用户基本了解Rainbond的安装机制和运维重点,便于用户搭建大型Rainbond集群。 1.Rainbond集群节点概述 1.1 节点分类 属性 类型 说明 manage 管...

好雨云帮
今天
9
0
好程序员大数据学习路线分享UDF函数

1.为什么需要UDF? 1)、因为内部函数没法满足需求。 2)、hive它本身就是一个灵活框架,允许用自定义模块功能,如可以自定义UDF、serde、输入输出等。 2.UDF是什么? UDF:user difine fun...

好程序员官方
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部