zoukankan      html  css  js  c++  java
  • getaddrinfo()

    //getaddrinfo()函数原型
    WINSOCK_API_LINKAGE
    INT
    WSAAPI
    getaddrinfo(
        _In_opt_        PCSTR               pNodeName,    //节点名可以是主机名,也可以是数字地址。(IPV4的10进点分,或是IPV6的16进制)
        _In_opt_        PCSTR               pServiceName, //包含十进制数的端口号或服务名如(ftp,http)
        _In_opt_        const ADDRINFOA *   pHints,       //是一个空指针或指向addrinfo结构的指针,由调用者填写关于它所想返回的信息类型的线索
        _Outptr_        PADDRINFOA *        ppResult      //存放返回addrinfo结构链表的指针
        );
    //调用该函数会获得一个addrinfo结构的列表,调用的返回值是addrinfo的结构(列表)指针。
    
    
    //addrinfo结构原型
    typedef struct addrinfo {     int                 ai_flags;       // AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST     int                 ai_family;      // PF_xxx ,AF_INET,AF_INET6,AF_UNSPEC     int                 ai_socktype;    // SOCK_xxx ,SOCK_STREAM,SOCK_DGRAM     int                 ai_protocol;    // 0 or IPPROTO_xxx for IPv4 and IPv6 ,IPPROTO_IP, IPPROTO_IPV4, IPPROTO_IPV6 etc.     size_t              ai_addrlen;     // Length of ai_addr     char *              ai_canonname;   // Canonical name for nodename     _Field_size_bytes_(ai_addrlen) struct sockaddr *   ai_addr;        // Binary address     struct addrinfo *   ai_next;        // Next structure in linked list } ADDRINFOA, *PADDRINFOA;

     由getaddrinfo返回的所有存储空间都是动态获取的,这些存储空间必须通过调用freeaddrinfo返回给系统。

    //freeaddrinfo()函数原型
    WINSOCK_API_LINKAGE VOID WSAAPI freeaddrinfo( _In_opt_ PADDRINFOA pAddrInfo );
    //getaddrinfo()函数示例

     char host_name[20] = "";
     gethostname(host_name, 20);

     ADDRINFOA hint, *pAddrinfo;
     memset(&hint, 0, sizeof(ADDRINFOA));
     hint.ai_family = AF_INET;
     hint.ai_socktype = SOCK_STREAM;
     hint.ai_protocol = IPPROTO_TCP;
     hint.ai_flags = AI_PASSIVE;
     int ret = getaddrinfo(host_name, "3050", &hint, &pAddrinfo);
     if (ret!=0)
     {
      AfxMessageBox(_T("获得主机IP失败"));
      return;
     }

     SOCKET socket_server = socket(pAddrinfo->ai_family, pAddrinfo->ai_socktype, pAddrinfo->ai_protocol);
     bind(socket_server, pAddrinfo->ai_addr, pAddrinfo->ai_addrlen);

  • 相关阅读:
    JNI_Z_02_函数参数_JNIEnv*_jclass_jobject
    JNI_Z_01_获取Clazz
    文章网址
    nginx安装,反向代理配置
    排序的hashmap(guava)
    Unirest-拼装http请求发送rest接口
    mac远程连接windows
    java class遍历属性
    mongodb mongotemplate聚合
    java tar.gz文件生成
  • 原文地址:https://www.cnblogs.com/zhoudingcocng/p/6483430.html
Copyright © 2011-2022 走看看