int inet_aton(const char *cp, struct in_addr *inp);

将形如“192.168.1.1"类型的点分十进制ip转换成二进制,并存放在struct in_addr中

192 = 0xc0

168 = 0xa8

1 = 0x01

因此转换后的值为0xc0a811

char *inet_ntoa(struct in_addr in);

将二进制的ip转成点分十进制形式,转换结果作为返回值

struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);

将32位的二进制ip转换成一个结构体指针

struct hostent
{
  char *h_name;            /* Official name of host.  */
  char **h_aliases;        /* Alias list.  */
  int h_addrtype;        /* Host address type.  */
  int h_length;            /* Length of address.  */
  char **h_addr_list;        /* List of addresses from name server.  */
#ifdef __USE_MISC
# define    h_addr    h_addr_list[0] /* Address, for backward compatibility.*/
#endif
};

typedef uint32_t in_addr_t;
struct in_addr
  {
    in_addr_t s_addr;
  };

#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <arpa/inet.h>int main(int argc, char** argv)
{struct in_addr addr;struct hostent *host;char ** var;if(argc < 2){printf("usage: %s | ip\n", *argv);exit(1);}argv++;for(; *argv!=NULL; argv++){if(inet_aton(*argv, &addr) != 0){host = gethostbyaddr(&addr, 4, AF_INET);printf("ip address: %s\n", *argv);}if(host == NULL){fprintf(stderr, "no ip address: %s\n", argv[1]);continue;}else{printf("host name: %s\n", host->h_name);for(var=host->h_addr_list; *var!=NULL; var++){printf("inet_ntoa ip address: %s\n", inet_ntoa(*(struct in_addr*)(*var)));}}}return 0;
}

输出结果

inet_ntoa() inet_aton()相关推荐

  1. linux u8 头文件,2019-12-11 转载TCP/IP编程常用C语言头文件

    网络编程的头文件(这里所有的头文件都在/usr/include目录下面) 经常被一些头文件搞大,不知到到哪个头文件去找结构.这里做个总结 ---------------- 版权声明:本文为CSDN博主 ...

  2. mysql中ip用什么存,在MySQL中,价钱和IP用什么类型存储最好?

    今天,一同事跑来问我,数据库应该用什么来保存IP地址,平时看到的都是字符串. 答曰:有钱任性!要么就像马云粑粑说的,开发心里受委屈了!开个玩笑,咱谈正事! 其实,日常开发中,大多数新手保存IP地址时会 ...

  3. 2019-12-11 转载TCP/IP编程常用C语言头文件

    网络编程的头文件(这里所有的头文件都在/usr/include目录下面) 经常被一些头文件搞大,不知到到哪个头文件去找结构.这里做个总结 ---------------- 版权声明:本文为CSDN博主 ...

  4. 数据库系统概论整理(Part Ⅰ)

    目录 算术与表达式 系统内置函数 视图 VS 基本表 数据库安全性控制 视图机制和审计 安全性保护 数据库完整性 关系的完整性 断言和触发器 概念 数据 \;\;\;\;\; 数据库(DB) \;\; ...

  5. 【C++服务器入门基础------8.IPC进程间通信--socket】

    大学生寒假在家过于无聊,整理一下以前学过的知识,顺便复习一下,水平较低,专业性差,仅供参考,不喜勿喷(反正也没人看).快解封了呜呜呜呜.... 一.TCP/IP协议簇 (1)概念 TCP/IP(Tra ...

  6. 盘点mysql中的那些函数-----数学与字符串函数(8.31更新)

    盘点mysql中的那些函数 数学函数 平方根与取余 最小整数与最大整数 随机函数---rand 四舍五入函数----round 符号函数 幂运算函数 对数函数 角度和弧度函数 三角函数 字符串函数 字 ...

  7. ip范围和cidr相互转换

    工具站 IP to CIDR online converter CREATE TABLE `ip` (`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT ...

  8. 《php开发典型模块大全》读书笔记 第三章 mysql数据库基础

    第三章  mysql基础 show columns  from table describe table alter table 修改表 rename   table   t1  to   t2 整型 ...

  9. linux网络编程之用一张图片说明函数inet_ntop、inet_pton、inet_addr、inet_ntoa 、inet_aton函数之间的关系

    1.inet_ntop.inet_pton.inet_addr.inet_ntoa .inet_aton函数之间的关系 2.inet_ntop.inet_pton函数的源代码 1.inet_pton函 ...

最新文章

  1. CentOS7 扩容 / 目录
  2. Adapter模式的好处
  3. 验证Ross《随机过程》(第二版)1.9C
  4. blob的真实地址怎么获得_使用Python抓取m3u8加密视频 续:获得index.m3u8 地址
  5. 在asp.net中调用process.start执行程序
  6. 新零售:从上云到云原生 Serverless
  7. c++ 获取操作的精确时间
  8. PYTORCH批标准化
  9. 正则表达式及其在Java和Python中的相关操作
  10. python的作用域分别有几种_Python中作用域的深入讲解
  11. 7个示例科普CPU Cache(from 酷壳网)
  12. 水晶报表for java_水晶报表(crystal reports)--java
  13. 局域网sip服务器搭建:opensips
  14. 自抗扰控制的入门学习(一)—— 前言
  15. java ppt转图片 失真_Apache POI将PPT转换成图片实例代码
  16. 微软五笔 v1.0 下载
  17. 几个冷门linux与BSD发行版中文学习论坛
  18. elasticsearch索引health 健康状态变为yellow,red处理
  19. 【吐槽】Android 第一步,雀氏纸尿裤
  20. 模拟二进制交叉(SBX)

热门文章

  1. c++中Const,Const函数,Const变量,函数后面的Const
  2. Chrome 制作绿色便携版
  3. 损失函数 - 交叉熵损失函数
  4. abs和pc混在一起怎么解决_PC/ABS常见问题及解决方案
  5. 【转载】Visual Studio 2017各版本安装包离线下载、安装全解析
  6. C#使用List.Clear()方法可以让GC回收内存吗?
  7. mysql 触发器delete_MySQL之触发器
  8. 深谈个人对新技术的看法
  9. (十八)自动装配-@Autowired-构造器,参数,方法,属性
  10. 2021最新上海互联网公司排名