zoukankan      html  css  js  c++  java
  • DNS解析

    同步API,会阻塞:
    getaddrinfo: IPV4 and IPV6, linux依赖<netdb.h>, windows依赖<ws2tcpip.h>
    gethostbyname: only IPV4
    异步:
    libevent
    getaddrinfo_a, 会执行注册的callback函数,

    c-ares库,另起一线程,select/poll类似,监听socket并调用callback

       ares_gethostbyname 

    在libcurl里,不会额外开线程,会在libcurl的线程里面不断的poll

    调用ares,提交DNS请求:

    (ares_gethostbyname)
    (Curl_resolver_getaddrinfo+45)
    (Curl_resolv+294)
    (Curl_connect+6112)
    (multi_runsingle+xx)
    (curl_multi_perform+98)

    Callback被调用

    (query_completed_cb) curl/lib/asyn-ares.c:466
    (end_hquery) cares/src/ares_gethostbyname.c:231
    (qcallback) cares/src/ares_query.c:180
    (end_query) cares/src/ares_process.c:1266
    (process_answer) cares/src/ares_process.c:547
    (processfds) cares/src/ares_process.c:152
    (ares_process_fd+14) cares/src/ares_process.c:173
    (waitperform +xx) curl/lib/asyn-ares.c:296
    (Curl_resolver_is_resolved+22)
    (multi_runsingle+xx)
    (curl_multi_perform+98)

  • 相关阅读:
    ACM-生化武器
    ACM-Antiprime数
    ACM-寻宝
    ACM-小偷的背包
    ACM-吴奶奶买鱼
    ACM-挑战题之排列生成
    ACM-数细胞
    ACM-售货员难题
    学习《linux》课程
    MATLAB 求圆形面积
  • 原文地址:https://www.cnblogs.com/zzSoftware/p/3891630.html
Copyright © 2011-2022 走看看