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

网站大全免费电影企业qq官网

网站大全免费电影,企业qq官网,centos 6.5 搭建wordpress,做跨境网站注意VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...&a…

VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/article/details/125529931C++软件分析工具从入门到精通案例集锦(专栏文章正在更新中...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/article/details/131405795C/C++基础与进阶(专栏文章,持续更新中...)icon-default.png?t=N7T8https://blog.csdn.net/chenlycly/category_11931267.html       在使用socket套接字去连接远端的服务器时,需要使用IP和远端服务器建链,不能直接使用域名,但我们配置服务器地址时有时需要设置域名,这需要我们在代码中添加域名解析的模块,在连接服务器之前将域名解析成IP地址。

1、域名解析的完整流程

       经常有朋友询问使用DNS系统查询IP的完整流程,这里我们普及一下这一过程。DNS服务器大致分为三种类型:根DNS服务器、顶级域DNS服务器和权威DNS服务器,其中顶级域DNS服务器主要负责诸如com、org、net、edu、gov 等顶级域名。

       根DNS服务器存储了所有顶级域DNS服务器的 IP 地址,可以通过根服务器找到顶级域服务器,比如百度的域名www.baidu.com,根服务器会返回所有维护 com 这个顶级域服务器的 IP 地址。然后你任选其中一个顶级域服务器发送请求,该顶级域服务器拿到域名后能够给出负责当前域的权威服务器地址。以 百度的域名为例,顶级域服务器将返回所有负责百度这个域的权威服务器地址。接着任选其中一个权威服务器地址查询“www.baidu.com”的具体 IP 地址,最终权威服务器会返回给你具体的 IP 地址。此外,本地 DNS 服务器是具有缓存功能的,通常两天内的记录都会被缓存。

       所以,通过DNS系统查询域名对应的 IP 的具体步骤可以总结为:

  • ① 操作系统先查本地 hosts文件 中是否有记录,如果有,则直接返回相对应映射的IP地址。
  • ② 如果本地hosts文件中没有配置,则主机向自己的本地DNS服务器发送查询报文,如果本地DNS服务器缓存中有,将直接返回结果。
  • ③ 如果本地服务器缓存中没有,则从内置在内部的根DNS服务器列表(全球13台,固定的IP地址)中选一个发送查询报文。
  • ④ 根服务器解析域名中的后缀名,告诉本地服务器负责该后缀名的所有顶级服务器列表。
  • ⑤ 本地服务器选择其中一个顶级域服务器发送查询请求,顶级域服务器拿到域名后继续解析,返回对应域的所有权威服务器列表。
  • ⑥ 本地服务器再向返回的权威服务器发送查询报文,最终会从某一个权威服务器上得到具体的 IP 地址。
  • ⑦ 主机返回结果IP。

2、调用gethostbyname发起域名解析       

       那如何实现将域名解析成IP地址呢?其实很简单,只要调用系统API函数gethostbyname即可实现。注意,gethostbyname函数可能会产生短暂的堵塞,该函数内部会先到网卡配置的DNS服务器上去查询域名对应的IP地址,如果本地DNS查询不到,则会到远端的DNS服务器上去查询,所以可能会比较耗时。

       所以我们需要将对gethostbyname函数调用的代码,放置在一个新的线程中,等解析出来后再将IP信息投递出来给主线程。相关的代码如下所示:

// 域名解析线程函数
UINT __stdcall QueryDomainThread( LPVOID pParam )
{char* lpszDomainName = (char*)pParam; struct hostent *pHost = gethostbyname( lpszDomainName ); if( NULL == pHost )  {   // ::PostMessage // 通知主线程域名解析失败return 0;   }if ( pHost->h_addr_list[0] != NULL ) { u32 dwIP = (*(in_addr*)pHost->h_addr_list[0]).S_un.S_addr; // ::PostMessage // 通知主线程域名解析成功,将解析出来的IP投递过去}  return 0; 
}// 发起域名解析,创建新的线程去解析
LRESULT StartQueryDomain( char* lpszDomainName )
{// 此处不能直接将局部变量lpszDomainName传到线程函数中,因为启动线程的_beginthreadex返回时,线程函数不一定跑起来了// 所以最好搞一个成员变量或者全局变量,将lpszDomainName中的字符串拷贝下来,然后给_beginthreadex传递这个声明周期// 更长的变量strcpy( g_szMDomainName, lpszDomainName );// 线程函数QueryDomainThread的实现,上面已经给出HANDLE hThread= (HANDLE)_beginthreadex( NULL, 0, QueryDomainThread, (void*)g_szMDomainName, 0, NULL );if( hThread != NULL ){CloseHandle( hThread );return S_OK;}return S_FALSE;
}
http://www.hrbkazy.com/news/29969.html

相关文章:

  • 商标设计找哪里赣州seo外包怎么收费
  • 网络优化大师郑州厉害的seo优化顾问
  • 怎么做各大视频网站的会员代理软文代写自助发稿平台
  • 淮安网站建设电话站长统计 站长统计
  • 个人网站备案需要哪些网络舆情分析报告范文
  • 网站制作建设百度用户服务中心官网
  • 宣传型商务网站十大免费网站推广
  • 做网站维护价格苏州疫情最新通知
  • 做外链一定要淘宝网站吗sem推广软件
  • 网页设计网站测试私人浏览器
  • 外贸b2c平台都有哪些网站seo服务内容
  • 网站后台管理系统教程如何做营销
  • 网站怎么做关键词研究关键词调词平台哪个好
  • 宝宝个人网站模板活动营销推广方案
  • 河南郑州网站制作独立站
  • 怎么用织梦做自己的网站百度关键词优化查询
  • 国家住房和城乡建设部网站查询十大免费推广平台
  • 广州高档网站建设南昌百度搜索排名优化
  • 网站框架怎么做的上海优化外包公司排名
  • 网站微信登录怎么做的福州短视频seo推荐
  • 甘肃建筑工程网云速seo百度点击
  • 网站建设汇编资料青岛关键词排名提升
  • wordpress清新模板下载免费seo软件
  • 网创八步的第七步优化设计七年级上册数学答案
  • 注册了自己的网站如何做品牌宣传与推广
  • 网站优化效果自助建站工具
  • c 做的网站又哪些网站seo置顶
  • 网站开发竞品分析营销软文范例大全
  • dedecms确定网站风格小红书推广价目表
  • 石家庄学网站建设百度推广登录平台app