免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: suyer
打印 上一主题 下一主题

gethostbyname问题! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-01-21 19:15 |只看该作者

gethostbyname问题!

gethostbyaddr
参数2为4如果3是inet的话
参数 2为16如果3是inet6的话

另外是怀疑楼主的机器有问题

因为这个程序没有问题

论坛徽章:
0
12 [报告]
发表于 2003-01-21 20:35 |只看该作者

gethostbyname问题!

struct  sockaddr_in   psckadd;

psckadd.sin_family            = AF_INET;
psckadd.sin_addr.s_addr       = inet_addr(ip);
psckadd.sin_port=htons(port);

用sockaddr_in 结构体得到的ip和用
gethostbyaddr((char *)&addr, sizeof (addr), AF_INET);得到
的ip有什么区别。
换句话说,什么情况下用gethostbyaddr???
谢谢。

论坛徽章:
0
13 [报告]
发表于 2003-01-22 08:49 |只看该作者

gethostbyname问题!

如果知道IP
想得到主机名时

看一下man 吧

论坛徽章:
0
14 [报告]
发表于 2003-01-22 21:00 |只看该作者

gethostbyname问题!

IP---->;HOST:
void main()
{
struct hostent *hp;
        ulong_t addr;

        addr=inet_addr("10.10.60.40";
        hp=gethostbyaddr((char *)&addr,sizeof(addr),AF_INET);
        printf("hostname=[%s]\n",hp->;h_name);
}
HOST------->;IP:
void main()
{         hp=gethostbyname("SRV1";
         printf("hostip=[%08x]\n",*( (struct in_addr *)hp->;h_addr));
printf("hostip=[%s]\n",inet_ntoa(*((struct in_addr *)hp->;h_addr)));
}

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
15 [报告]
发表于 2003-01-24 09:28 |只看该作者

gethostbyname问题!


  1. char MyName[20];
  2. char *hostname, *ptr;

  3. struct hostent *HostIP;
  4. struct in_addr inip;
  5.        
  6. /* 得到该运行程序所在主机的主机名称 */
  7. if( gethostname(MyName, sizeof(MyName))<0 )
  8. {
  9.         printf("Gethostname Error\n");
  10.         return;
  11. }
  12. printf("My Host Name is %s\n",MyName);
  13.        
  14. if(!(HostIP = gethostbyname(MyName)))
  15. {
  16.     printf("Get host name failed.\n");
  17.     return;
  18. }

  19. /* 得到该运行程序所在主机的IP地址(形如 *.*.*.* ) */
  20. memset((void *)&inip, sizeof(inip), 0);
  21. hostname=HostIP->;h_name;
  22. inip.s_addr=*((unsigned long *)HostIP->;h_addr_list[0]);

  23. if(!(ptr=(char *)inet_ntoa(inip)))
  24.         memcpy(&inip,HostIP->;h_addr,HostIP->;h_length);
  25. printf("My IP is %s\n",ptr);
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP