zoukankan      html  css  js  c++  java
  • (转载)Linux网络编程inet_ntoa问题记录

    (转载)http://blog.chinaunix.net/uid-1771330-id-2863811.html

    今天在写代码时遇到一个问题并于在一个函数传递参数时连续调用inet_ntoa时出现的,下面是问题的模拟代码:

    int main()
    {
        char* pIp1;
        char* pIp2;
        char ip_addr1[] = "192.168.1.20";
        char ip_addr2[] = "192.168.1.40";
    
        struct in_addr addr1;
        struct in_addr addr2;
    
        char ip1[16] = {0};
        char ip2[16] = {0};
    
        bzero(&addr1, sizeof(struct in_addr));
        bzero(&addr2, sizeof(struct in_addr));
    
        inet_aton(ip_addr1, &addr1);
        inet_aton(ip_addr2, &addr2);
    
        printf("IP address1: %s\nIP address2: %s\n", inet_ntoa(addr1), inet_ntoa(addr2));
    
        printf("+++IP address1: %s\n", inet_ntoa(addr1));
        printf("+++IP address2: %s\n", inet_ntoa(addr2));
    
        pIp1 = inet_ntoa(addr1);
        pIp2 = inet_ntoa(addr2);
        printf("---IP address1: %s\n", pIp1);
        printf("---IP address2: %s\n", pIp2);
    
        return 0;
    }

    程序输出:

    [root@robot ~]# ./a.out
    IP address1: 192.168.1.20
    IP address2: 192.168.1.20
    +++IP address1: 192.168.1.20
    +++IP address2: 192.168.1.40
    ---IP address1: 192.168.1.40
    ---IP address2: 192.168.1.40
    [root@robot ~]#

    注意:inet_ntoa()返回的字符串是临时装在一个“静态分配的缓冲”区里面,下一次调用此函数的时候缓冲区会被重写

  • 相关阅读:
    TCP流量控制和拥塞控制
    延迟确认和Nagle算法
    浅谈TCP三次握手和四次挥手
    中介者模式
    代理模式
    装饰者模式
    生成器模式(构建者模式)
    策略模式
    模板方法模式
    抽象工厂模式
  • 原文地址:https://www.cnblogs.com/Robotke1/p/3055749.html
Copyright © 2011-2022 走看看