- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章基于Mysql的IP处理函数inet_aton()与inet_ntoa()的深入分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
有个统计需求,需要对IP进行分类统计,Mysql提供了inet_aton()和inet_ntoa()函数进程处理。 具体可以查看官方手册.
INET_ATON(expr) 给出一个作为字符串的网络地址的点地址表示,返回一个代表该地址数值的整数。地址可以是4或8比特地址.
mysql> select inet_ntoa(3507806248); +-----------------------+ | inet_ntoa(3507806248) | +-----------------------+ | 209.20.224.40 | +-----------------------+ 1 row in set (0.00 sec) 。
产生的数字总是按照网络字节顺序。如上面,数字按照 209×2563 + 207×2562 + 224×2561 + 40 ×2560 进行计算。我们来验算下:
mysql> select 209*POW(256,3)+207*POW(256,2)+224*POW(256,1)+40*POW(256,0); +------------------------------------------------------------+ | 209*POW(256,3)+207*POW(256,2)+224*POW(256,1)+40*POW(256,0) | +------------------------------------------------------------+ | 3520061480 | +------------------------------------------------------------+ 1 row in set (0.02 sec) 。
INET_ATON() 也能理解短格式 IP 地址:
mysql> select inet_aton('127.0.0.1'),inet_aton('127.1'); +------------------------+--------------------+ | inet_aton('127.0.0.1') | inet_aton('127.1') | +------------------------+--------------------+ | 2130706433 | 2130706433 | +------------------------+--------------------+ 1 row in set (0.00 sec) 。
可以理解成为中间2为地址默认为0.
注: 在存储由INET_ATON() 产生的值时,推荐你使用 INT UNSIGNED 列。假如你使用 (带符号) INT列, 则相应的第一个八位组大于127的IP 地址值会被截至 2147483647 (即, INET_ATON('127.255.255.255′) 所返回的值)。当然,直接使用bigint更加省事.
INET_NTOA(expr) 给定一个数字网络地址 (4 或 8 比特),返回作为字符串的该地址的电地址表示。也就是inet_aton()的反函数.
mysql> select inet_ntoa(3507806248); +-----------------------+ | inet_ntoa(3507806248) | +-----------------------+ | 209.20.224.40 | +-----------------------+ 1 row in set (0.00 sec) 。
最后此篇关于基于Mysql的IP处理函数inet_aton()与inet_ntoa()的深入分析的文章就讲到这里了,如果你想了解更多关于基于Mysql的IP处理函数inet_aton()与inet_ntoa()的深入分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
这个问题已经有答案了: Weird printf behaviour with inet_ntoa (2 个回答) 已关闭 5 年前。 让我很困惑,这个例子有不同的结果。是不是我哪里出了问题。 #in
有人知道 MySql INET_NTOA() 如何将整数值转换回 IP 地址格式吗?我想知道内部如何进行计算以将IP转换为其原始互联网标准点分十进制格式。 最佳答案 它使用网络将一个整数分解为四个字节
我在数据库中有一个表 (sessions),其第一列包含数字 IP 地址,例如: _____________ | srcIP | ------------- | 167973143 | | 1
inet_ntoa() 函数导致以下代码中的 Segmentation fault 错误。请告诉我,为什么。我该如何解决?非常感谢! void ClientAdd ( int clientSocket
我在/usr/include/arpa/inet.h 中看到下面这行: extern char *inet_ntoa (struct in_addr __in) __THROW; 但是它真正定义在哪里
我正在声明以下变量 unsigned long dstAddr; unsigned long gateWay; unsigned long mask; 这些变量包含网络字节顺序的 IP 地
#include #include /* for strncpy */ #include #include #include #include
尝试为数据包嗅探器编写处理程序。我在转换和 inet_ntoa() 方面遇到问题。代码如下: uint32_t *iphdr_srcaddr = malloc(sizeof(uint32_t)); i
我正在尝试使用 inet_ntoa 函数写入以下代码: printf("Got connection from: %s:%d\n", inet_ntoa(cli_addr.sin_addr.s_add
我使用函数 char* inet_ntoa(struct in_addr in), 编写了一个服务器当我包含标题时 和 ,可以生成带有编译器警告的可执行二进制文件,但是当程序处理来自 inet_nt
浏览 GNU C 库的源代码,我发现 inet_ntoa 是用 static __thread char buffer[18] 我的问题是,既然需要使用可重入的inet_ntoa,为什么GNU C库的
考虑以下程序: #include #include #include #include #include #include void printhost(cha
我应该是瞎了,因为我在 ubuntu 和 debian 的发行版中找不到这些命令,也没有包含它们的包。 我应该自己用 C 编写代码和编译它们(或者用 perl 或其他任何语言编写或查找此代码)还是它(
我正在理解 gethostbyname() 函数。当时我找到了下面的示例程序。 #include #include #include #include #include #include
好的,在发布这个问题之前,我已经检查了这里的线程 in_addr_t to string 我的问题不一样。 我知道 inet_ntoa 函数属于以下类型 char * inet_ntoa (struc
// char ip1[] = "127.0.0.1"; char ip2[] = "211.100.21.179"; printf("ip1: %s\nip2: %s\n", ip1, ip2);
#include #include #include #include #include int main(int argc, char **argv) { struct socka
我遇到了 inet_ntoa 导致 OSX 上的段错误的问题,这不会发生在 Linux 上。 我的测试代码如下。 // sample.c #include #include #include #
我查看了 inet_ntoa 的实现喜欢 this和 this , 我想知道为什么他们都分配了一个 18 个字符的缓冲区。 如果我取最大长度的 IPv4 地址字符串:255.255.255.255我需
当我在没有 arpa/inet.h 包含的情况下使用 inet_ntoa 时,编译器为什么不报告错误? 我运行了这段代码: struct sockaddr_in dest; printf("%d\n"
我是一名优秀的程序员,十分优秀!