高手指点下迷津,这个IP该怎么存?

yccwt 2011-10-28 02:05:56
unsigned char ServerIp[4];

怎样将一个IP地址完整的存进去?再完整解析出来?

如:char strIp = "192.168.100.119";


...全文
150 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
guanhuijie 2011-10-29
  • 打赏
  • 举报
回复
要存到哪?没遇到过这问题呀
liang_cheng_jie 2011-10-28
  • 打赏
  • 举报
回复
这个问题我也想很久了,终于看到点眉目了
picansay 2011-10-28
  • 打赏
  • 举报
回复
unsigned char ServerIp[4];

怎样将一个IP地址完整的存进去?再完整解析出来?

如:char strIp = "192.168.100.119";


IP地址我们常看到的表示方式,点分十进制,
如,255.255.255.255
机器码为
11111111.11111111.11111111.11111111
当然机器码中间没有点,点只是让我们看起来直观一点。
32BIT可表示IPV4地址,楼主4个字节的数组,4*8=32正好表示
原理搞明白,代码写起来很简单,希望楼主自己想下。

还有一点楼主写的,“如:char strIp = "192.168.100.119";”有点问题
指出来以免误导新学习C的人
应写为char *strIp = "192.168.100.119";
或者char strIp【】 = "192.168.100.119";
qq120848369 2011-10-28
  • 打赏
  • 举报
回复
192放a[0],168放a[1]。。。。。。。。

楼主就不能自己思考下么。
LFGMeteor 2011-10-28
  • 打赏
  • 举报
回复
192.168.100.119 各对应一个ARCII字符,存进unsigned char ServerIp[4];里面,刚好4位,取的时候反过来。
rendao0563 2011-10-28
  • 打赏
  • 举报
回复
发2个工具函数给你.


static inline std::string FormatIP(unsigned int dwIP)
{
sockaddr_in s;
s.sin_family = AF_INET;
s.sin_addr.s_addr = dwIP;
return inet_ntoa(s.sin_addr);
}

static inline unsigned int FormatIP(const std::string & strIp)
{
return inet_addr(strIp.c_str());
}
Lactoferrin 2011-10-28
  • 打赏
  • 举报
回复
自己实现也不难
nice_cxf 2011-10-28
  • 打赏
  • 举报
回复
仔细查了一下,inet_aton和inet_addr都是所有平台通用的,inet_aton支持4个255,用那个区别不大
Q446512799 2011-10-28
  • 打赏
  • 举报
回复
inet_addr
luciferisnotsatan 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yccwt 的回复:]

哦,对了,是在linux下,我谷歌下inet_aton先
[/Quote]
linux下就用inet_pton吧,这个支持ipv6的。windows下没这个函数
yccwt 2011-10-28
  • 打赏
  • 举报
回复
哦,对了,是在linux下,我谷歌下inet_aton先
nice_cxf 2011-10-28
  • 打赏
  • 举报
回复
1楼给的是LINUX下的,windows下边是inet_addr
luciferisnotsatan 2011-10-28
  • 打赏
  • 举报
回复
unsigned long inet_addr(
const char* cp
);

nice_cxf 2011-10-28
  • 打赏
  • 举报
回复
inet_aton

69,382

社区成员

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

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