比较有吸引力的问题,MS开的玩笑,你有解决办法么?

ganguozai 2006-11-08 03:25:55
众所周知,几乎任何应用系统都含日志功能。基于.Net平台的web应用也不例外。然而HttpRequest类提供的UserHostAddress可以获取远程主机的IP地址,但是UserHostName却不能获取远程主机的机器名。事实上,后者返回居然也是远程IP地址。怎么回事,强大的MS为何在这个问题上仅提供了接口,却未提供文档中声称的功能。
后来,在MSDN上查找了相关资料,发现DNS类可以根据IP地址获取主机名,于是做了一个简单的控制台应用程序,写了个转换函数(功能:根据远程IP地址获取机器名),测试一下,很快!耗时几乎为0毫秒。然而随后又做了个简单web应用,发现同样的代码,在模拟真实环境(一台机器访问另一台服务器)测试时,耗时几乎为20秒。为何差距会如此之大?显然,这么长的等待时间是不可忍受的。

小弟的问题是:
(1)为何UserHostName不能返回预期的远程机器名?
(2)同样方法在桌面应用效果好,而在web应用中效果差,难道.net框架对这2中应用的内在处理机制不一样么?
(3)j2ee平台上的web应用不存在这个问题,那么就.net平台的web应用,我如何有效解决这个问题?
...全文
191 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
erqie 2006-11-12
  • 打赏
  • 举报
回复
好像楼主这几个名字不是很了解.DNS名称跟主机名以及IP之间的关系.
你说的
"MSDN中的确存在“UserHostName 获取远程客户端的 DNS 名称”描述(事实上,实际中返回的依然是IP"

你的机器没有相应的DNS之后应该返回的就是IP地址吧.

"在内网测试,发现IPHostEntry类提供HostName属性实际返回的就是“主机名”,为何不是文档中描述的“DNS名称"

在局域网里,机器名是可以当域名使用的.出了局域网就不行了.
ganguozai 2006-11-11
  • 打赏
  • 举报
回复
to sp1234:
首先我要声明一下,我的问题是针对局域网而提出来的,勿需考虑互联网的问题。
MSDN中的确存在“UserHostName 获取远程客户端的 DNS 名称”描述(事实上,实际中返回的依然是IP地址,这一点没搞明白)。
但是,Dns类中提供如下接口
public static IPHostEntry GetHostByAddress(string ipAddr); //ip地址字符串
而IPHostEntry类提供HostName属性,返回DNS名称。
故根据这2点,可以设计一个接口GetHostNameByAddress(string ipAddr),用于返回主机名
在内网测试,发现IPHostEntry类提供HostName属性实际返回的就是“主机名”,为何不是文档中描述的“DNS名称”?请再次指点一二!!!
  • 打赏
  • 举报
回复
我们知道有些域名及其url可能就是服务器群,可能是一个路由器,可能是一个手机,可能是一个房子,可能是一部电话,可能是一台ATM,可能是一台洗衣机,可能是一个超市,可能是一个活人......UserHostName最多只能是域名,而不能被认为是机器名。
  • 打赏
  • 举报
回复
如果你能远程获得机器名(呵呵,我们暂且认为所有机器全都是ms操作系统做的),那么现在立刻试试 www.microsoft.com 以及 www.google.com 的机器名,结果是什么呢?
  • 打赏
  • 举报
回复
注意不要拿局域网里试验的结论套在互联网上。
ganguozai 2006-11-10
  • 打赏
  • 举报
回复
谢谢各位的回帖,本人在此谢过了。
不过,本人还有点疑问:xiahouwen(武眉博<活靶子.NET>)给出的demo是如何实现如此快速的响应的,你能否指点的更详细些?!
活靶子哥哥 2006-11-08
  • 打赏
  • 举报
回复
应该可以获得机器名的


demo:


http://www.aspxboy.com/env/
fcuandy 2006-11-08
  • 打赏
  • 举报
回复
1,学学网络知识会知道远程主机名的获取会有诸多限制。几年前搞这方面比较清楚,现在还有些印象,但想打出来也不太可能。但ms这样做是很明智的。
2,我不太清楚具体原因,至少应用时采用的协议不一样。
3,不懂
zorou_fatal 2006-11-08
  • 打赏
  • 举报
回复
你先把你如何使用的帖出来看看啊。不然大家怎么知道你如何实现的
ganguozai 2006-11-08
  • 打赏
  • 举报
回复
咋回事,这个问题难道各位大哥觉得不是问题???!!!
zorou_fatal 2006-11-08
  • 打赏
  • 举报
回复
楼主所说的在web应用里使用,是如何使用的?可以贴一部分代码出来看看么?

62,248

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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