这句代码怎么转换?

BAO BAO 2012-03-07 08:10:21
大概意思就是 用 怎样转换 hostent 结构里德 ip 地址 直接 赋值给 serverAddr.sin_addr.S_un.S_addr =

我现在用的方法是 serverAddr.sin_addr.S_un.S_addr = inet_addr(inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list));
这个能行 但感觉 转换了这么多次 有没有更简洁的办法呢 ?

baidu 找到 下面一些代码: 我调试不成功。。 你们有没有比较简洁的办法啊。 我不需要获取多个 ip 只需要解析
host->h_addr里的第一个 ip 就够用了 。。


server_addr.sin_addr=*((struct in_addr *)(host->h_addr));

serverAddr.sin_addr.S_un.S_addr = *(int*)(*hp->h_addr);

memcpy(&server_addr.sin_addr, (struct in_addr *)host->h_addr, host->h_length);
...全文
97 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
BAO BAO 2012-03-07
  • 打赏
  • 举报
回复
不错 呵呵 楼上的代码 可以成功。。。。厉害

我又发现了 int 类型 就够用了: addr.S_un.S_addr = *(int *)hostinfo->h_addr;
就可以成功 谢谢 quwei197874 呵呵

这个不算多难的事 我是初学者 基本功不好 对一些结构的数据类型 的返回值 和转换 还不是太懂。。谢谢大家了 呵呵
quwei197874 2012-03-07
  • 打赏
  • 举报
回复
h_addr.s_addr = *((unsigned long *) host->h_addr_list[0]);
fprintf(stdout, "%s/n", inet_ntoa(h_addr));

69,369

社区成员

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

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