如何使用c语言通过域名得到ip。服务器是域名转发的技术

baidu_28183327 2015-05-14 10:22:35
如题,想要通过域名获取ip地址。但是服务器是域名转发的,使用gethostbyname可以解析到百度什么的,但是不能解析到公司的。域名是www.xxx.local 形式的,求帮助,这个问题弄了好久了
...全文
551 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_28183327 2015-05-29
  • 打赏
  • 举报
回复
续求解决方案
baidu_28183327 2015-05-25
  • 打赏
  • 举报
回复
引用 18 楼 yhlzxq 的回复:
用的是域名转发技术来把ip转发回来,而不是解析
???
yhlzxq 2015-05-23
  • 打赏
  • 举报
回复
用的是域名转发技术来把ip转发回来,而不是解析
baidu_28183327 2015-05-21
  • 打赏
  • 举报
回复
引用 16 楼 dooX8086 的回复:
域名---->IP : 我们常常称为 域名解析,是通过 DNS 服务器进行解析的 域名转发(URL跳转) :DNS服务器是没有这功能的,是由 DNS服务商提供的特殊处理的功能,是专门针对浏览器的( http 客户端) 如:www.a.com 做了转发到 www.b.com 过程大概是这样: 1). 浏览器 ----- 向 DNS服务 请求 www.a.com 的 IP -----> DNS 返回一个 IP (这是个"虚假"的IP, 是DSN服务商专为url转发准备好的) 2). 浏览器 ----- 使用http协议访问: IP -----> IP主机会返回 http 301/302 location:www.b.com 的 内容给 浏览器 3). 浏览器 处理 http 301/302 location:www.b.com, 然后访问 www.b.com (这就是所为的 跳转 ) 4). 浏览器 ----- 向 DNS服务 请求 www.b.com 的 IP (这个才是真的目的IP) 5). ...... ps:怎么感觉我把它说复杂了 - -!!!! -------------------------------------------------------------------------------------- 拿 csdn 的域名来的看看 www.csdn.com 是做了跳转到 www.csdn.net 的 用工具 curl 看看它 可以看到 是采用 http 302 显式 跳转 你再用 浏览器 访问下 www.csdn.com 就应该明白了, 所为的URL跳转 是 http 客户端干的 说了一陀陀都是关于 域名跳转/url转发 的 ------------------------------------------------------------ 如果楼主环境的相关服务对 www.xxxx.local "转发" 所做的特殊处理是直接返回目的 IP 的... ...那请无视我上面所说的。 因为这就是 DNS 的 A记录了
非常感谢你的解答,非常详细,有点诚惶诚恐。嗯,之前问过领导,他说服务器是直接返回ip地址的。那就是说我现在应该朝着a记录这个线索走了?
dooX8086 2015-05-20
  • 打赏
  • 举报
回复
域名---->IP : 我们常常称为 域名解析,是通过 DNS 服务器进行解析的
域名转发(URL跳转) :DNS服务器是没有这功能的,是由 DNS服务商提供的特殊处理的功能,是专门针对浏览器的( http 客户端)
如:www.a.com 做了转发到 www.b.com
过程大概是这样:
1). 浏览器 ----- 向 DNS服务 请求 www.a.com 的 IP -----> DNS 返回一个 IP (这是个"虚假"的IP, 是DSN服务商专为url转发准备好的)
2). 浏览器 ----- 使用http协议访问: IP -----> IP主机会返回 http 301/302 location:www.b.com 的 内容给 浏览器
3). 浏览器 处理 http 301/302 location:www.b.com, 然后访问 www.b.com (这就是所为的 跳转 )
4). 浏览器 ----- 向 DNS服务 请求 www.b.com 的 IP (这个才是真的目的IP)
5). ......

ps:怎么感觉我把它说复杂了 - -!!!!

--------------------------------------------------------------------------------------
拿 csdn 的域名来的看看
www.csdn.com 是做了跳转到 www.csdn.net 的
用工具 curl 看看它

可以看到 是采用 http 302 显式 跳转
你再用 浏览器 访问下 www.csdn.com 就应该明白了, 所为的URL跳转 是 http 客户端干的

说了一陀陀都是关于 域名跳转/url转发 的

------------------------------------------------------------
如果楼主环境的相关服务对 www.xxxx.local "转发" 所做的特殊处理是直接返回目的 IP 的... ...那请无视我上面所说的。
因为这就是 DNS 的 A记录了
baidu_28183327 2015-05-20
  • 打赏
  • 举报
回复
引用 14 楼 dooX8086 的回复:
哦。url 转发(跳转) 走的是 http 301/ 302 . 可以用curl 或其它工具 抓一下 www.xxxx.local 验证一下 如: curl -I www.xxxx.local 如果是的话。 那就需要从 http 301/302 中取出 真正的目的 host 再用 getaddrinfo 才可以获取到地址
= = 本人愚钝。。。没太明白。。。对于网络方便几乎一穷二白。。。c 语言网络方面更是。。。 它这个是这样的,正常的url转发是给你另一个域名,但是它是转发回一个ip地址,然后我这边取到,它就当是域名解析用了。。。。
baidu_28183327 2015-05-15
  • 打赏
  • 举报
回复
用的是域名转发技术来把ip转发回来,而不是解析。。。
baidu_28183327 2015-05-15
  • 打赏
  • 举报
回复
引用 10 楼 ForestDB 的回复:
要么把服务器配好,要么直接在hosts中加上name,ip的对应。
问题是就是,它服务器不是正常的dns服务器啊。。。是域名转发的啊。。。
baidu_28183327 2015-05-15
  • 打赏
  • 举报
回复
引用 9 楼 dooX8086 的回复:
你的这个 www.xxxx.local 域名记录 有没在你公司的 dns 服务器上? 没有就让你同事帮你添加
不是dns服务器。。。它那个是域名转发的服务器。。。。
dooX8086 2015-05-15
  • 打赏
  • 举报
回复
哦。url 转发(跳转) 走的是 http 301/ 302 . 可以用curl 或其它工具 抓一下 www.xxxx.local 验证一下 如: curl -I www.xxxx.local 如果是的话。 那就需要从 http 301/302 中取出 真正的目的 host 再用 getaddrinfo 才可以获取到地址
ForestDB 2015-05-14
  • 打赏
  • 举报
回复
要么把服务器配好,要么直接在hosts中加上name,ip的对应。
dooX8086 2015-05-14
  • 打赏
  • 举报
回复
你的这个 www.xxxx.local 域名记录 有没在你公司的 dns 服务器上? 没有就让你同事帮你添加
baidu_28183327 2015-05-14
  • 打赏
  • 举报
回复
引用 7 楼 dooX8086 的回复:
域名 ----> ip 先查找本地 dns 表记录(缓存),如果没有)-----请求----> dns 服务器 如果 www.xxxx.local 是个私有域名 (自己定的,没有通过公共dns服申请) . 可以通过修改本地的 hosts 文件或在 dns 服务(自己服务器)上添加 A 记录, 为 www.xxxx.local 指定 ip 只有这样 gethostbyname 跟 getaddrinfo 等。函数才能取得IP ----------------------------------------- ps: 好像 gethostbyname 跟 getaddrinfo 还支持 netbios 协议...嗯..忘记了
非常感谢您的回答。主要这边问题在于,它这个服务器是url转发,而不是正常的dns服务器。所以这个才不能正常得到ip地址把。但是安卓那边确可以使用正常的java代码返回得到ip。。。
dooX8086 2015-05-14
  • 打赏
  • 举报
回复
域名 ----> ip 先查找本地 dns 表记录(缓存),如果没有)-----请求----> dns 服务器 如果 www.xxxx.local 是个私有域名 (自己定的,没有通过公共dns服申请) . 可以通过修改本地的 hosts 文件或在 dns 服务(自己服务器)上添加 A 记录, 为 www.xxxx.local 指定 ip 只有这样 gethostbyname 跟 getaddrinfo 等。函数才能取得IP ----------------------------------------- ps: 好像 gethostbyname 跟 getaddrinfo 还支持 netbios 协议...嗯..忘记了
baidu_28183327 2015-05-14
  • 打赏
  • 举报
回复
引用 5 楼 super_admi 的回复:
为什么我看不懂你的意思呢? 按我自己的理解说说吧:我觉得你是没有办法解析你们公司的域名的。为啥?因为你们公司没有自己的域名服务器,而网上的域名服务器中的解析表又没有你们公司的域名。
= = 是可以的。我们公司那个服务器应该不是正常的域名服务器。它是用的域名转发实现的。你问我为什么会这样。。。对不起。。。我不知道。。。然后,安卓端那边已经实现了。- - 我这是ios。主要是url转发11年就全面下掉了,根本没什么资料了。。。真实头大
super_admi 2015-05-14
  • 打赏
  • 举报
回复
为什么我看不懂你的意思呢? 按我自己的理解说说吧:我觉得你是没有办法解析你们公司的域名的。为啥?因为你们公司没有自己的域名服务器,而网上的域名服务器中的解析表又没有你们公司的域名。
baidu_28183327 2015-05-14
  • 打赏
  • 举报
回复
gethostbyname 跟 getaddrinfo 我都试过了。只能解析到百度这类的域名。不过我们那个域名是www.xxxx.local这个样式的,不知道这个会不会有影响。
baidu_28183327 2015-05-14
  • 打赏
  • 举报
回复
我是做移动端开发的。自带的实现不了,就想利用c语言解决。
BrillianceRen 2015-05-14
  • 打赏
  • 举报
回复
DNSQuery? 我忘了这货有没有类似接口了, 不过这或许是个C艹接口, 但是也不必在意, C艹接口也可以给C用
赵4老师 2015-05-14
  • 打赏
  • 举报
回复
参考c:\WINDOWS\system32\drivers\etc\hosts文件的内容?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧