网络地址格式的如何转换?

abcbit 2003-05-26 09:11:05
inet_addr()这个函数是转化成数字了 比如inet_addr(202.113.1.12):201421458
可不可以再把这个数字转换成IP形式呢? 因为我要再pingproc(char *ip)中使用这个变量
我的目的是:从命令行中提取要PING的机器地址段,然后各个处理

比如一个地址段:从202.113.1.12到202.113.1.255, 先看看我的笨方法,大概是这个意思
我的困难在于如何再把数字格式转化成字符串,或者说IP的格式

unsigned long i,j,k;
i=inet_addr("202.113.1.12");
j=inet_addr("202.113.1.255");

for(k=i;k<=j;k++)
{
char *ip = addrproc(k); //addrproc()如何完成??????
pingproc(ip);
}
...全文
56 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2003-05-26
  • 打赏
  • 举报
回复
哦,其实带着也无所谓,因为SUN机器上,htonl函数什么也不做。
FBStudio 2003-05-26
  • 打赏
  • 举报
回复
inet_ntoa就可以完成这个功能。
原型:
char FAR * inet_ntoa(
struct in_addr in
);

成功时返回以“.”分隔的IP地址串,失败时返回NULL
晨星 2003-05-26
  • 打赏
  • 举报
回复
错了错了,上面最后一行改为:
pringproc(k);
晨星 2003-05-26
  • 打赏
  • 举报
回复
编写一个直接使用整形网络地址的pingproc(只需把函数中使用inet_addr返回值的地方改为直接使用整形参数)。

如果你的CPU是Intel系列的,也就是整数表示低位在前,可以这样:
i = ntohl(inet_addr("202.113.1.12"));
j = ntohl(inet_addr("202.113.1.255"));

for(k = i ; k <= j ; k++)
pringproc(htonl(k));

如果你的CPU是SUN系列的,也就是高位在前的。就这样:
i = inet_addr("202.113.1.12");
j = inet_addr("202.113.1.255");

for(k = i ; k <= j ; k++)
pringproc(htonl(k));

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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