char FAR * inet_ntoa (
struct in_addr in
);
这个函数可以把IPv4地址数据转换为字符串的形式。
看着这个函数总觉得有些别扭,心想对于一般的Win32 API而言,返回字符串的形式应该是类似这个样子:
returntype SomeFunction(LPTSTR lpBuffer);
为了搞清楚它里面的秘密,我写了如下的代码进行测试:
struct in_addr ip;
ip.S_un.S_addr = 0x12345678;
char * str = inet_ntoa(ip);
MessageBox(NULL, str, "IP", 0);
ip.S_un.S_addr = 0x87654321;
inet_ntoa(ip);
MessageBox(NULL, str, "IP", 0);
执行的结果是str所指向的内存空间的内容改变了。如此看来,这个函数的实现应该是这个样子:
char FAR * inet_ntoa (struct in_addr in)
{
static char strRet[16];
// ...
return strRet;
}
老实说,我觉得这样的代码不够科学,对外部代码的耦合性不是很好,而且浪费内存。
分享到:
相关推荐
IP处理函数inet_aton()和inet_ntoa()使用说明,需要的朋友可以参考下
关于inet_ntoa返回的值是静态变量
网络程序设计inet_ntoa()&inet;_addr()&htonl;()函数代码,简单编写的,可供于关于以上函数的思想方式。没有头文件中的强大,没有错误提示及处理代码段,学习网络程序设计可以参考。
描述了IP地址格式转换的常用接口,主机字节序和网络字节序相互转换,Ip字符串转换成long型数值;高字节序和低字节序的名词解释
有个统计需求,需要对IP进行分类统计,Mysql提供了inet_aton()和inet_ntoa()函数进程处理。具体可以查看官方手册。 INET_ATON(expr)给出一个作为字符串的网络地址的点地址表示,返回一个代表该地址数值的整数。地址...
当前很多应用都适用字符串char(15)来存储IP地址(占用16个字节),利用inet_aton()和inet_ntoa()函数,来存储IP地址效率很高,适用unsigned int 就可以满足需求,不需要使用bigint,只需要4个字节,节省存储空间,...
inet_download_manager_6.37.15.rar
实验二:在PC机上熟悉常用网络命令 3.1 实验内容和要求: Ping.exe,Netstat.exe, Telnet.exe, Tracert.exe, Winipcfg.exe...C:\>arp -s 157.55.85.212 00-aa-00-62-c6-09 添加,可以再打入arp –a 验证是否已经加入.
本文将介绍如何在数据库中使用合适格式保存ip地址数据,并能方便的对ip地址进行比较的方法。 1、保存ip地址到数据库 数据库中保存ip地址,字段一般会定义为: `ip` char(15) NOT NULL, 因为ip地址(255.255.255.255)...
用于下载网上资源,速度奇快无比,无与伦比,简直让人乍舌,谁用谁知道,你用你也知道。。。就这样,话不多说
| inet_recvmsg net/ipv4/af_inet.c | udp_recvmsg net/ipv4/udp.c | skb_recv_datagram net/core/datagram.c | ------------------------------------------- | sock_queue_rcv_skb include/net/sock.h | udp_queue...
C语言inet_ntoa()函数:将网络二进制的数字转换成网络地址 头文件: #include <sys> #include <netinet> #include 定义函数: char * inet_ntoa(struct in_addr in); 函数说明:inet_ntoa()用来将参数in 所指...
LoadRunner监控Linux rstat协议允许网络上的用户获得同一网络上各机器的性能参数。...若rstatd程序已经运行,重启时,先查看进程ps -ef |grep inet,然后杀掉进程,再refresh –s inetd进行重启。
inet_var.h
GL-iNet路由器最新固件,路由器型号必须是GL.iNet6416,可在网页上更新固件
Inet控件下载实例,批量下载大量网页,占用资源非常少!