分享

inet_addr 和inet_ntoa函数作用

 wusiqi111 2017-07-21


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

inet_add函数声明如下:

  1. unsigned long inet_addr(const char* cp);  

参数:

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


inet_ntoa 函数声明如下:

  1. char* inet_ntoa(struct in_addr in);  

参数:

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

  1. struct in_addr   
  2. {  
  3.     union   
  4.     {  
  5.         struct { UCHAR s_b1,s_b2,s_b3,s_b4; } S_un_b;  
  6.         struct { USHORT s_w1,s_w2; } S_un_w;  
  7.         ULONG S_addr;  
  8.     } S_un;  
  9. };  


函数使用代码如下:

  1. SOCKADDR_IN sock;  
  2. sock.sin_family = AF_INET;  
  3. //将字符串转换为in_addr类型  
  4. sock.sin_addr.S_un.S_addr =  inet_addr("192.168.1.111");  
  5. sock.sin_port = htons(5000);  
  6.   
  7. //将in_addr类型转换为字符串  
  8. printf("inet_ntoa ip = %s\n",inet_ntoa(sock.sin_addr));  

结果输出:

inet_ntoa ip = 192.168.1.111

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多