aa

相关函数原型及参数类型:

函数原型:
int inet_aton(const char *cp, struct in_addr *inp); in_addr_t inet_addr(const char *cp); in_addr_t inet_network(const char *cp); char *inet_ntoa(struct in_addr in); struct in_addr inet_makeaddr(int net, int host); in_addr_t inet_lnaof(struct in_addr in); in_addr_t inet_netof(struct in_addr in); int inet_pton(int af, const char *src, void *dst);
       inet_pton()  returns  1 on success (network address was successfully converted).  0 is returned if src does not contain a character string representing a valid network address in the specified
       address family.  If af does not contain a valid address family, -1 is returned and errno is set to EAFNOSUPPORT. 参数类型:
/* Internet address.  */
typedef uint32_t in_addr_t;
struct in_addr
{
    in_addr_t s_addr;
};
inet_addr函数:将IPv4的点分十进制地址转换为网络字节序
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h> int main(int argc, char *argv[])
{
    struct in_addr addr;     if (argc != 2) {
        fprintf(stderr, "%s <dotted-address>\n", argv[0]);
        exit(EXIT_FAILURE);
    }     if (inet_aton(argv[1], &addr) == 0) {
        perror("inet_aton");
        exit(EXIT_FAILURE);
    }
    printf("addr = 0x%-10x\n", addr.s_addr);     printf("%s\n", inet_ntoa(addr));
    exit(EXIT_SUCCESS);
} yinguicai@Cpl-IBP-Product:~/tmp/network$ ./a.out 127.0.0.1
addr = 0x100007f   
127.0.0.1
char *inet_ntoa(struct in_addr in)
{
static char buf[INET_NTOA_MAX_LEN];
return inet_ntoa_r(in, buf);
}

注意:

1、inet_ntoa的返回值是一个static类型的char *指针,所以使用的时候需要注意(不可重入,可以使用线程安全的inet_ntoa_r函数代替)

2、The inet_addr() function converts the Internet host address cp from IPv4 numbers-and-dots notation into binary data in network byte order.  If the input is invalid, INADDR_NONE (usually -1) is
       returned.  Use of this function is problematic(有问题的) because -1 is a valid address (255.255.255.255).  Avoid its use in favor of inet_aton(), inet_pton(3), or getaddrinfo(3) which provide a  cleaner
       way to indicate error return.(因为其返回值为in_addr_t,当返回-1时,有二义性->表示两个含义)

3、inet_aton() returns nonzero if the address is valid, zero if not.

4、inet_aton/inet_addr/inet_ntoa仅适用于ipv4地址

5、inet_pton/inet_ntop对于v4和v6地址均适用

最新文章

  1. mongodb的用户管理及安全认证
  2. WIN32/API/SDK/MFC四者之间的联系和区别
  3. 内存管理_JAVA内存管理
  4. Xamarin.Android开发实践(十三)
  5. c++ socket 客户端库 socks5 客户端 RudeSocket™ Open Source C++ Socket Library
  6. wamp图标黄色的另一种可能原因
  7. 使用单调队列优化的 O(nm) 多重背包算法
  8. datazen 备份还原
  9. LGPL与闭源程序
  10. eclipse proxy
  11. SpringMVC简版教程、部分功能
  12. pyspider 文档介绍
  13. 安装mysql zip5.6版--安裝
  14. AngularJs 刷新页面
  15. 爬虫基础以及 re,BeatifulSoup,requests模块使用
  16. HDU 1260
  17. Halcom学习笔记1——Halcon知识点
  18. xtrabackup 备份和恢复
  19. Python pyodbc安装
  20. powershell玩转litedb数据库-第二版

热门文章

  1. ironic简介
  2. Proud Merchants HDU - 3466 (思路题--有排序的01背包)
  3. [CODE FESTIVAL 2016]Problem on Tree
  4. poj 2342 &amp;&amp; hdu 1520 树形dp
  5. [转]Intent和IntentFilter详解
  6. [转]String.Replace 和 String.ReplaceAll 的区别
  7. 反向代理实现同域名下PHP和Java共存
  8. bosondata/chrome-prerender: Render JavaScript-rendered page as HTML/PDF/mhtml/png/jpeg using headless Chrome
  9. django 获取 POST 请求值的几种方法(转)
  10. 在iOS 7中使用storyboard(part 1)