当前位置: 首页 > news >正文

html5 微网站模版山东思达建筑公司排名

html5 微网站模版,山东思达建筑公司排名,广西新宇建设项目有限公司网站,电子商务seo招聘摘要#xff1a; 无论是从 Local DNS 解析域名#xff0c;获取到 IP 列表#xff0c;还是从第三方的 DNS 解析服务中#xff0c;获取到域名对应的 IP 列表。我们获得多个 IP 后#xff0c;总是想选取一个最优的 IP 使用#xff0c;本文主要探讨如何在客户端探测 IP 的连接…摘要 无论是从 Local DNS 解析域名获取到 IP 列表还是从第三方的 DNS 解析服务中获取到域名对应的 IP 列表。我们获得多个 IP 后总是想选取一个最优的 IP 使用本文主要探讨如何在客户端探测 IP 的连接性以及连接速度保证返回可用性最好的IP以达到“IP优选”的目的。 移动端 IP 优选方案 1. IP 优选目的 无论是从 Local DNS 解析域名获取到 IP 列表还是从第三方的 DNS 解析服务中获取到域名对应的 IP 列表。我们获得多个 IP 后总是想选取一个最优的 IP 使用本文主要探讨如何在客户端探测 IP 的连接性以及连接速度保证返回可用性最好的IP以达到“IP优选”的目的。 2. 新浪开源的 httpdns 的 sdk 里的测速逻辑 新浪开源一个 HTTPDNSLib 里面包含了测速逻辑GitHub地址如下 《HTTPDNSLib-for-iOS》 《HTTPDNSLib》 我们以该 sdk 里的测速逻辑为例进行原理解析。 3. IP 测试实现原理 使用 linux socket connect 和 select 函数实现的。 基于以下原理 即使套接口是非阻塞的。如果连接的服务器在同一台主机上那么在调用connect 建立连接时连接通常会立即建立成功我们必须处理这种情况。 源自Berkeley的实现(和Posix.1g)有两条与select 和非阻塞IO相关的规则 A. 当连接建立成功时套接口描述符变成可写 B. 当连接出错时套接口描述符变成既可读又可写。 详细的测速实现如下原理参考注释 以 iOS 实现为例 - (int)testSpeedOf:(NSString *)ip port:(int16_t)port {NSString *oldIp ip;//request time outfloat rtt 0.0;//sock将要被设置或者获取选项的套接字。int s 0;struct sockaddr_in saddr;saddr.sin_family AF_INET;// MARK: - 设置端口这里需要根据需要自定义默认是80端口。saddr.sin_port htons(port);saddr.sin_addr.s_addr inet_addr([ip UTF8String]);//saddr.sin_addr.s_addr inet_addr(1.1.1.123);if( (ssocket(AF_INET, SOCK_STREAM, 0)) 0) {NSLog(ERROR:%s:%d, create socket failed.,__FUNCTION__,__LINE__);return 0;}NSDate *startTime [NSDate date];NSDate *endTime;//为了设置connect超时 把socket设置称为非阻塞int flags fcntl(s, F_GETFL,0);fcntl(s,F_SETFL, flags | O_NONBLOCK);//对于阻塞式套接字调用connect函数将激发TCP的三次握手过程而且仅在连接建立成功或者出错时才返回//对于非阻塞式套接字如果调用connect函数会之间返回-1表示出错且错误为EINPROGRESS表示连接建立建立启动但是尚未完成//如果返回0则表示连接已经建立这通常是在服务器和客户在同一台主机上时发生。int i connect(s,(struct sockaddr*)saddr, sizeof(saddr));if(i 0) {//建立连接成功返回rtt时间。 因为connect是非阻塞所以这个时间就是一个函数执行的时间毫秒级没必要再测速了。close(s);return 1;}struct timeval tv;int valopt;socklen_t lon;tv.tv_sec HTTPDNS_SOCKET_CONNECT_TIMEOUT;tv.tv_usec 0;fd_set myset;FD_ZERO(myset);FD_SET(s, myset);// MARK: - 使用select函数对套接字的IO操作设置超时。/**select函数select是一种IO多路复用机制它允许进程指示内核等待多个事件的任何一个发生并且在有一个或者多个事件发生或者经历一段指定的时间后才唤醒它。connect本身并不具有设置超时功能如果想对套接字的IO操作设置超时可使用select函数。**/int maxfdp s1;int j select(maxfdp, NULL, myset, NULL, tv);if (j 0) {NSLog(INFO:%s:%d, test rtt of (%) timeout.,__FUNCTION__,__LINE__, oldIp);rtt HTTPDNS_SOCKET_CONNECT_TIMEOUT_RTT;close(s);return rtt;}if (j 0) {NSLog(ERROR:%s:%d, select function error.,__FUNCTION__,__LINE__);rtt 0;close(s);return rtt;}/**对于select和非阻塞connect注意两点[1] 当连接成功建立时描述符变成可写 [2] 当连接建立遇到错误时描述符变为即可读也可写遇到这种情况可调用getsockopt函数。**/lon sizeof(int);//valopt 表示错误信息。// MARK: - 测试核心逻辑连接后获取错误信息如果没有错误信息就是访问成功/*!* //getsockopt函数可获取影响套接字的选项比如SOCKET的出错信息* (get socket option)*/getsockopt(s, SOL_SOCKET, SO_ERROR, (void*)(valopt), lon);//如果有错误信息if (valopt) {NSLog(ERROR:%s:%d, select function error.,__FUNCTION__,__LINE__);rtt 0;} else {endTime [NSDate date];rtt [endTime timeIntervalSinceDate:startTime] * 1000;}close(s);return rtt; }
http://wiki.neutronadmin.com/news/397735/

相关文章:

  • 高端品牌建站微信app下载安装旧版本
  • 做住宿的网站戴尔网站建设的特点
  • 对网站建设课程的心得体会o2o网站开发相关技术
  • 用python做音乐网站金融网站素材
  • 怎么做网站自动采集数据库wordpress404无法加载
  • 婚纱摄影行业网站ai生成图片在线制作
  • 深圳网站建设公司top20网站模板商城
  • 郑州有官方网站的公司信息网络技术
  • 成都网站建设需要多少钱宁波网站建设推广平台
  • 青岛网站推广哪家便宜花溪建设村镇银行官方网站
  • 基于cms设计网站的背景意义百度一键安装
  • 空间ip地址访问网站城市管理如何宣传市建设网站
  • 企业网站的建设 英文摘要泰安毕业生档案查询
  • 条件查询 php网站源码泉州seo搜索优化合作
  • 营销展示型网站建设价格偃师建设局网站
  • 做网站的一定要开80或8080端口网站建设 网页设计
  • jsp网站开发中常见问题wordpress搜索框样式
  • 制作查询网站本地搭建linux服务器做网站
  • 网站标签制作无法跳转到建设银行网站
  • 网站策划主要工作是什么基于wordpress的博客
  • 如何制作网站策划书免费跨境电商网站
  • 找到网站后台地址应用商店最新版本
  • 建设厅网站业务系统板块查成绩宜宾三江新区核酸检测
  • 网站建设全部流程图wordpress 管理员密码
  • 苏州网站建设案例企业网站seo教程
  • 优秀的网站开发表白网站怎么做
  • 苏州做网站推广的广告联盟平台排名
  • 旅游电子商务网站的建设方式天天向上网站建设
  • 上海市住房和城乡建设管理局网站一个网站制作流程
  • 做简单最网站的软件是静态展示类网站