菜鸟问题,如何根据域名得到该服务器的IP地址,知道IP地址又如何得到该机的域名

Rain_Z001 2004-05-02 05:53:11
什么平台无所谓,最好是C++的代码,我好看懂。
yuezw@163.com
...全文
86 3 点赞 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
UDX协议 2004-05-03
BOOL CGetSMTPHostName::GetSmtpHostName(CString _EmailAddress, CString& _HostName)
{
BOOL bRV = TRUE;
_HostName.Empty();
int start = _EmailAddress.Find('@')+1;
CString strDomain = _EmailAddress.Mid(start,_EmailAddress.GetLength()-start);
if( ! strDomain.IsEmpty())
{
// First, look in our map to see if we have looked up this SMTP Host before
m_SMTPHostIterator = m_SMTPHost.find(strDomain);
if(m_SMTPHostIterator != m_SMTPHost.end())
{
// Great, we've looked this one up before...
_HostName = (*m_SMTPHostIterator).second;
// Is it unknown???
if(_HostName == "UNK")
{
bRV=FALSE;
_HostName.Empty();
}
}
else
{
// OK, we haven't looked this up before, so look it up
DNS_RECORD* ppQueryResultsSet = NULL;
DNS_STATUS statusDNS = ::DnsQuery( strDomain, DNS_TYPE_MX, DNS_QUERY_STANDARD, NULL, &ppQueryResultsSet, NULL );
if(statusDNS == ERROR_SUCCESS)
{
// Found the SMTP Host Name, insert it into our map
_HostName = ppQueryResultsSet->Data.MX.pNameExchange;
m_SMTPHost.insert(HostMapValue(strDomain,_HostName));
}
else
{
// I have opted to place unknown domains in the map to reduce
// the time that I spend looking up the domain names. You
// may want to implement this differently for your usage.
bRV = FALSE;
DNS_STATUS theError = statusDNS;
m_SMTPHost.insert(HostMapValue(strDomain,"UNK"));
}
}
}
else
{
// OOPS, is this a valid email address?
bRV = FALSE;
}
return(bRV);
}

这是通过邮件地址得到smtp的服务器名,然后通过gethostbyname得到 ip;

如果有IP,可通过gethostbyaddr得到机器名,不一定是域名。

  • 打赏
  • 举报
回复
yhqs540 2004-05-03
你填写进去就可以了,windows自动找dns进行解析
  • 打赏
  • 举报
回复
halk 2004-05-02
不用什么代码,一个函数就够了。
gethostbyname, gethostbyaddr
去MSDN查一查,自己动手来做,才能真正搞明白。很简单的东西,不要总是期望别人把代码写出来给你。
  • 打赏
  • 举报
回复
相关推荐
发帖
网络编程
加入

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
帖子事件
创建了帖子
2004-05-02 05:53
社区公告
暂无公告