zoukankan      html  css  js  c++  java
  • linux网络编程 inet_aton(); inet_aton; inet_addr;

    1. inet_aton()是一个改进的方法来将一个字符串IP地址转换为一个32位的网络序列IP地址。
    
    2. inet_ntoa()  本函数将一个用in参数所表示的Internet地址结构转换成以“.” 间隔的诸如“a.b.c.d”的字符串形式。 若无错误发生,inet_ntoa()返回一个字符指针。否则的话,返回NVLL。
    
    3. in_addr_t inet_addr(const char *cp);
    成功:返回成功转换的ip地址,输入字符串有效 返回0:输入字符串有错,返回-1。
    所在头文件:<arpa/inet.h>
    若无错误发生,inet_addr()返回一个无符号长整型数,其中以适当字节顺序存放Internet地址。如果传入的字符串不是一个合法的Internet地址,如“a.b.c.d”地址中任一项超过255,那么inet_addr()返回INADDR_NONE。在IP只有一部分时(即没有 ”.“ 时),IP的字符串如果只由数字组成,inet_addr()不检查数字是否大于255
    函数概要如下:
      头文件:#include <sys/socket.h>
      #include <netinet/in.h>
      #include <arpa/inet.h>
      完整描述:
      int inet_aton(const char *string, struct in_addr*addr);
      参数描述:
      1 输入参数string包含ASCII表示的IP地址。
      2 输出参数addr是将要用新的IP地址更新的结构。
      返回值:
      如果这个函数成功,函数的返回值非零,如果输入地址不正确则会返回零。使用这个函数并没有错误码存放在errno中,所以他的值会被忽略。
    函数说明及举例:
      对于这个函数有一点迷惑的就是这个函数调用所需要的两个参数。
      如果我们定义了一个AF_INET套接口地址:
      struct sockaddr_in adr_inet; /* AF_INET */
      提供给inet_aton函数调用的参数指针为 &adr_inet.sin_addr
      下面这个程序使用inet_aton函数,而不是我们在前面所谈到的in_addr函数。
      /*
      * inetaton.c
      static void bail(const char *on_what)
      {
      fputs(on_what,stderr);
      fputs("
    ",stderr);
      }
      int main(int argc,char **argv)
      {
      int z;
      struct sockaddr_in adr_inet; /* AF_INET */
      int len_inet; /* length */
      int sck_inet; /* Socket */
      /* Create a Socket */
      sck_inet = socket(AF_INET,SOCK_STREAM,0);
      if(sck_inet == -1)
      bail("Socket()");
      /* Establish address */
      memset(&adr_inet,0,sizeof adr_inet);
      adr_inet.sin_family = AF_INET;
      adr_inet.sin_port = htons(9000); .
      if( !inet_aton("127.0.0.1",&adr_inet.sin_addr))
      bail("bad address");
      len_inet = sizeof adr_inet;
      /* Bind it to the socket */
      z = bind(sck_inet,(struct sockaddr *)&adr_inet,len_inet);
      if(z == -1)
      bail("bind()");
      /* Display our socket address */
      system("netstat -pa --tcp 2>/dev/null"
      " | grep inetaton");
      return 0;
      }
      程序的运行结果如下:
      S$ ./inetaton
      tcp 0 0 127.0.0.23:9000 *:* CLOSE 1007/inetaton
  • 相关阅读:
    将Nginx添加到windows服务中
    springboot使用redis管理session
    GIT常用命令
    阻止360、谷歌浏览器表单自动填充
    谈谈对Spring IOC的理解
    同一个Nginx服务器同一端口配置多个代理服务
    LeetCode 653. Two Sum IV
    109. Convert Sorted List to Binary Search Tree(根据有序链表构造平衡的二叉查找树)
    108. Convert Sorted Array to Binary Search Tree(从有序数组中构造平衡的BST)
    LeetCode 236. Lowest Common Ancestor of a Binary Tree(二叉树求两点LCA)
  • 原文地址:https://www.cnblogs.com/zendu/p/4988005.html
Copyright © 2011-2022 走看看