请教一段ip转字符串代码

douzi24 2010-04-28 07:24:05
/* From tcptraceroute, convert a numeric IP address to a string */
#define IPTOSBUFFERS 12
char *iptos(u_long in)
{
static char output[IPTOSBUFFERS][3*4+3+1];
static short which;
u_char *p;

p = (u_char *)∈
which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);
sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);
return output[which];
}


谁能解释一下这段代码
static char output[IPTOSBUFFERS][3*4+3+1];
是怎么用的呢,为什么是一个二维数组呢
...全文
166 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2010-04-28
  • 打赏
  • 举报
回复

DWORD dwIp = 16777343; // IP: 127.0.0.1
dwIp = htonl(dwIp);
BYTE ip1 = (dwIp >> 24) & 0xFF;
BYTE ip2 = (dwIp >> 16) & 0xFF;
BYTE ip3 = (dwIp >> 8) & 0xFF;
BYTE ip4 = dwIp & 0xFF;

char buf[20] = {0};
sprintf(buf, "%d.%d.%d.%d", ip1, ip2 ,ip3, ip4);
AfxMessageBox(CString(buf));
Eleven 2010-04-28
  • 打赏
  • 举报
回复
DWORD dwIp = 16777343; // IP: 127.0.0.1
SOCKADDR_IN addr;
addr.sin_addr.S_un.S_addr = dwIp;

BYTE ip1= addr.sin_addr.S_un.S_un_b.s_b1;
BYTE ip2= addr.sin_addr.S_un.S_un_b.s_b2;
BYTE ip3= addr.sin_addr.S_un.S_un_b.s_b3;
BYTE ip4= addr.sin_addr.S_un.S_un_b.s_b4;

char buf[20] = {0};
sprintf(buf, "%d.%d.%d.%d", ip1, ip2 ,ip3, ip4);
AfxMessageBox(CString(buf));
liwei3290 2010-04-28
  • 打赏
  • 举报
回复
写的太麻烦了 用API
尹成 2010-04-28
  • 打赏
  • 举报
回复
char FAR * inet_ntoa(
struct in_addr in
);

重新整合下
deletex 2010-04-28
  • 打赏
  • 举报
回复
用上面说的。。

另外,用二维数组保存了12个ip的字符数组,除非有需要获得上一次的ip转换纪录,否则用一维数组就行了
这不是鸭头 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dong364 的回复:]
为什么不用API呢?该函数写得好差劲!
char FAR * inet_ntoa(
struct in_addr in
);
[/Quote]
dong364 2010-04-28
  • 打赏
  • 举报
回复
为什么不用API呢?该函数写得好差劲!
char FAR * inet_ntoa(
struct in_addr in
);

18,356

社区成员

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

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