• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            New libevent: dns and http support

            from:http://unx.ca/log/2006/10/17/new-libevent-dns-and-http-support/

            Last night Niels Provos announced the release of libevent 1.2. It comes with 2 new and useful features:

            • Non-blocking DNS resolution: previously you had to write your own, hunt down someone elses or uses threads to prevent DNS lookups from blocking your app. This came just at the right time for me as I was about to integrate someone elses non-blocking solution into my app.
            • Support for simple HTTP clients and servers: At first thought this may seem like unneeded bloat, and to many it might. I usually work on applications that lack a user interface and sometimes a simple http interface is very useful for debugging, or quickly adding some extra control to your application. This might even been robust enough to add a basic webservices like API to your application.

            Non-blocking DNS example:

            #include <sys/types.h>
            #include <sys/time.h>
            /* For inet_ntoa. */
            #include <sys/socket.h>
            #include <netinet/in.h>
            #include <arpa/inet.h>
            #include <stdlib.h>
            #include <stdio.h>
            #include <stdint.h>
            #include <event.h>
            #include <evdns.h>
            void
            usage(void)
            {
            fprintf(stderr, “USAGE: evdns-demo <hostname>n”);
            exit(1);
            }
            void
            evdns_cb(int result, char type, int count, int ttl, void *addresses, void *arg)
            {
            struct in_addr *addrs = addresses;
            int i;
            if (result != 0) {
            printf(“Error looking up address.n”);
            exit(1);
            }
            else {
            for (i = 0; i < count; i++) {
            printf(“%sn”, inet_ntoa(addrs[i]));
            }
            exit(0);
            }
            }
            int
            main(int argc, char **argv)
            {
            if (argc != 2)
            usage();
            event_init();
            evdns_init();
            evdns_resolve_ipv4(argv[1], 0, evdns_cb, NULL);
            event_dispatch();
            return (0);
            }
            

            http server example

            #include <sys/types.h>
            #include <sys/time.h>
            #include <stdlib.h>
            #include <err.h>
            #include <event.h>
            #include <evhttp.h>
            void
            root_handler(struct evhttp_request *req, void *arg)
            {
            struct evbuffer *buf;
            buf = evbuffer_new();
            if (buf == NULL)
            err(1, “failed to create response buffer”);
            evbuffer_add_printf(buf, “Hello World!n”);
            evhttp_send_reply(req, HTTP_OK, “OK”, buf);
            }
            void
            generic_handler(struct evhttp_request *req, void *arg)
            {
            struct evbuffer *buf;
            buf = evbuffer_new();
            if (buf == NULL)
            err(1, “failed to create response buffer”);
            evbuffer_add_printf(buf, “Requested: %sn”, evhttp_request_uri(req));
            evhttp_send_reply(req, HTTP_OK, “OK”, buf);
            }
            int
            main(int argc, char **argv)
            {
            struct evhttp *httpd;
            event_init();
            httpd = evhttp_start(“0.0.0.0″, 8080);
            /* Set a callback for requests to “/”. */
            evhttp_set_cb(httpd, “/”, root_handler, NULL);
            /* Set a callback for all other requests. */
            evhttp_set_gencb(httpd, generic_handler, NULL);
            event_dispatch();
            /* Not reached in this code as it is now. */
            evhttp_free(httpd);
            return 0;
            }
            

            posted on 2007-08-21 01:27 楊粼波 閱讀(617) 評論(0)  編輯 收藏 引用

            久久99精品九九九久久婷婷| 亚洲欧洲日产国码无码久久99| 香蕉久久久久久狠狠色| 国产L精品国产亚洲区久久 | 潮喷大喷水系列无码久久精品| 一本色道久久99一综合| 久久婷婷国产综合精品| 亚洲人成网亚洲欧洲无码久久 | 99久久国产综合精品麻豆| 亚洲精品美女久久777777| 久久成人国产精品免费软件| 久久只这里是精品66| 久久综合鬼色88久久精品综合自在自线噜噜 | 久久只有这精品99| 一本久久a久久精品亚洲| 亚洲综合熟女久久久30p| 久久香综合精品久久伊人| 99久久无色码中文字幕| 久久被窝电影亚洲爽爽爽| 色综合久久综精品| 美女久久久久久| 欧美喷潮久久久XXXXx| 国产成人香蕉久久久久| 久久精品国产WWW456C0M| 久久婷婷五月综合成人D啪| 久久精品国产亚洲精品2020 | 99国产欧美久久久精品蜜芽| 久久国产精品-久久精品| 久久人人爽人人爽AV片| 热re99久久精品国99热| 久久精品国产一区二区| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 久久99热这里只有精品66| 麻豆AV一区二区三区久久| 久久天天躁狠狠躁夜夜2020| 久久99热这里只有精品国产| 日韩欧美亚洲综合久久影院d3| 久久人做人爽一区二区三区| 国产精品成人99久久久久91gav| 久久精品国产亚洲AV影院| 久久夜色精品国产|