域名和长整型的转换

zihuilegend 2003-12-10 06:59:09
知道一个域名,转换为unsigned int , 如何转换。
有好的算法吗。
...全文
21 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fierygnu 2003-12-16
  • 打赏
  • 举报
回复
不能这样直接用,要注意字节序。
chehw 2003-12-16
  • 打赏
  • 举报
回复
LONG lValue;
char **p;
host =(struct hostent *) gethostbyname(cp);
if(host->h_length==4)
{
while(p=host->h_addr_list)
{
lValue=*(LONG *)p;
//处理第对应网卡IP地址的LONG值
...
p++;
}
}
fierygnu 2003-12-16
  • 打赏
  • 举报
回复
hotmail.com的第一个网络地址(这里即IP地址),网络字节序。
sevencat 2003-12-16
  • 打赏
  • 举报
回复
htonl
ntohl
转换一下就可以了吧。
fierygnu 2003-12-16
  • 打赏
  • 举报
回复
big-endian和little-endian的存储格式不一样。网络字节序是big-endian。
chehw 2003-12-16
  • 打赏
  • 举报
回复
应该没问题吧。
BYTE[4]和ULONG的内存结构应该是一样的。
char[4]转换成ULONG应该没有问题。
zihuilegend 2003-12-15
  • 打赏
  • 举报
回复
host =(struct hostent *) gethostbyname(cp);
cp是 hotmail.com
那么h_addr_list[0]是什么?
fierygnu 2003-12-11
  • 打赏
  • 举报
回复
得到的就是struct hostent的指针。h_addr_list就是地址列表,最后用0结尾。
struct hostent {
char *h_name; /* canonical name of host */
char **h_aliases; /* alias list */
int h_addrtype; /* host address type */
int h_length; /* length of address */
char **h_addr_list; /* list of addresses */
};
zihuilegend 2003-12-11
  • 打赏
  • 举报
回复
host =(struct hostent *) gethostbyname(cp);
假如域名已知, 我做了这样的转换,得到的是什么呢?
域名是 www.hotmail.com 还是 hotmail.com。
zihuilegend 2003-12-10
  • 打赏
  • 举报
回复
我觉得思路应该是:域名-》ip表示-》unsigned int , 但是不知道有没有好的算法和代码。拱手等候~~
blueclu0281 2003-12-10
  • 打赏
  • 举报
回复
用对应的ASCII不行?

69,371

社区成员

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

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