zoukankan      html  css  js  c++  java
  • inet_addr 和inet_ntoa函数作用

    我们使用socket进行通信的时候,我们需要指定三个元素:通信域(地址族)、IP地址、端口号,这三个元素由SOCKADDR_IN结构体定义,为了简化编程一般将IP地址设置为INADDR_ANY,如果需要使用特定的IP地址则需要使用inet_addr 和inet_ntoa完成字符串和in_addr结构体的互换,in_addr是SOCKADDR_IN成员,其代表IP地址。

    inet_add函数声明如下:

    unsigned long inet_addr(const char* cp);

    参数:

        cp代表点分十进制的IP地址,如1.2.3.4


    inet_ntoa 函数声明如下:

    char* inet_ntoa(struct in_addr in);

    参数:

        in代码in_addr的结构体,其结构体如下:

    struct in_addr 
    {
        union 
        {
            struct { UCHAR s_b1,s_b2,s_b3,s_b4; } S_un_b;
            struct { USHORT s_w1,s_w2; } S_un_w;
            ULONG S_addr;
        } S_un;
    };


    函数使用代码如下:

    SOCKADDR_IN sock;
    sock.sin_family = AF_INET;
    //将字符串转换为in_addr类型
    sock.sin_addr.S_un.S_addr =  inet_addr("192.168.1.111");
    sock.sin_port = htons(5000);
    
    //将in_addr类型转换为字符串
    printf("inet_ntoa ip = %s
    ",inet_ntoa(sock.sin_addr));

    结果输出:

    inet_ntoa ip = 192.168.1.111


  • 相关阅读:
    洛谷P3513 [POI2011]KON-Conspiracy
    柱状图 三分法+树状数组
    CF习题集三
    CF习题集二
    CF习题集一
    单调队列总结
    SP688 SAM
    lemon使用方法
    洛谷 P2403 [SDOI2010]所驼门王的宝藏 题解
    字符串学习笔记二
  • 原文地址:https://www.cnblogs.com/jinxiang1224/p/8468321.html
Copyright © 2011-2022 走看看